spring boot 中介面引數為列舉時的反序列化配置(總結)
阿新 • • 發佈:2021-07-13
步驟
-
如果是 GET 請求中需要反序列化列舉值(即 url 中的引數[querystring]),確保以下兩點
1.1. 重寫 StringToEnumConverterFactory
1.2. 配置 registry.addConverterFactory(new StringToEnumConverterFactory());
-
如果是 POST 請求,確保以下兩點
2.1. 在目標欄位或 getXXX() 上寫
@JsonValue
註解,這個註解會在序列化以及反序列化時使用,但僅限於 json 格式的資料,如果是 GET 請求中 url 上的引數,這個就沒用,因為只有 json 的序列化和反序列化才會走 jackson 的程式碼啊2.2. 如果欄位或 getXXX() 返回的是 Integer 型別的資料,那麼客戶端在傳值時需要 toString() 一下,即確保傳遞過來的值是字串型別,而不是整型,否則無法解析引數(如果有時間再深究)。
2.3.
0
和"0"
也可以傳,這個會被反序列化成列舉型別中的第一項
備註
關於第一點和第二點中具體程式碼的配置,可以參考之前寫的spring-boot rest controller 使用列舉作為引數,重寫反序列化實現任意值轉列舉型別