1. 程式人生 > 其它 >spring boot 中介面引數為列舉時的反序列化配置(總結)

spring boot 中介面引數為列舉時的反序列化配置(總結)

步驟

  1. 如果是 GET 請求中需要反序列化列舉值(即 url 中的引數[querystring]),確保以下兩點

    1.1. 重寫 StringToEnumConverterFactory

    1.2. 配置 registry.addConverterFactory(new StringToEnumConverterFactory());

  2. 如果是 POST 請求,確保以下兩點

    2.1. 在目標欄位或 getXXX() 上寫 @JsonValue 註解,這個註解會在序列化以及反序列化時使用,但僅限於 json 格式的資料,如果是 GET 請求中 url 上的引數,這個就沒用,因為只有 json 的序列化和反序列化才會走 jackson 的程式碼啊

    2.2. 如果欄位或 getXXX() 返回的是 Integer 型別的資料,那麼客戶端在傳值時需要 toString() 一下,即確保傳遞過來的值是字串型別,而不是整型,否則無法解析引數(如果有時間再深究)。

    2.3. 0"0" 也可以傳,這個會被反序列化成列舉型別中的第一項

備註

關於第一點和第二點中具體程式碼的配置,可以參考之前寫的spring-boot rest controller 使用列舉作為引數,重寫反序列化實現任意值轉列舉型別