簡體   English   中英

Jackson 中不區分大小寫的 JsonNode

[英]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 屬性將使用它們的小寫等效項進行匹配,這意味着任何大小寫組合(傳入和匹配的名稱由小寫字母規范化)都應該工作。 請注意,存在額外的性能開銷,因為在比較之前傳入的屬性名稱需要小寫,對於有大寫字母的情況。 但是,已經是小寫的名稱的開銷應該可以忽略不計。

默認情況下禁用該功能。

https://fasterxml.github.io/jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind/MapperFeature.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM