Java Jackson中不区分大小写的JsonNode

Java Jackson中不区分大小写的JsonNode,java,json,jackson,Java,Json,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()并将结果小写并不是一个好的解决方案。没有自动化的方法,但

我需要反序列化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月)起提供:

接受不区分大小写的属性

允许对传入JSON进行更宽容的反序列化的特性。如果启用,bean属性将使用其小写等价物进行匹配,这意味着任何大小写组合(传入名称和匹配名称由小写规范化)都应该工作。 请注意,由于传入的属性名称在比较之前需要小写,因此存在额外的性能开销,对于大写字母的情况。但是,已经是小写的名称的开销应该可以忽略不计

默认情况下禁用该功能