![](/img/trans.png)
[英]How allow case-insensitive mapping of enums in jackson/Spring boot?
[英]Case-insensitive JsonNode in Jackson
我需要反序列化 JSON 對象並以不區分大小寫的方式訪問字段。 例子:
String s = "{\"FOO\": 123}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(s);
node.get("foo"); // this should return the "FOO" field
這需要高性能,因此調用getFieldNames()
並將結果小寫不是一個好的解決方案。
沒有自動化的方法,但您可以通過創建自定義 JsonNodeFactory 來創建自定義 ObjectNodes —— 然后您可以覆蓋用於添加和訪問條目的方法。
此功能自 2.5(2015 年 1 月)起可用:
ACCEPT_CASE_INSENSITIVE_PROPERTIES
允許對傳入的 JSON 進行更寬容的反序列化的功能。 如果啟用,bean 屬性將使用它們的小寫等效項進行匹配,這意味着任何大小寫組合(傳入和匹配的名稱由小寫字母規范化)都應該工作。 請注意,存在額外的性能開銷,因為在比較之前傳入的屬性名稱需要小寫,對於有大寫字母的情況。 但是,已經是小寫的名稱的開銷應該可以忽略不計。
默認情況下禁用該功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.