繁体   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