我需要反序列化JSON对象并以不区分大小写的方式访问字段。例如:
String s = "{\"FOO\": 123}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(s);
node.get("foo"); // this should return the "FOO" field
这需要具有高效性,因此调用getFieldNames()
并降低结果并不是一个好的解决方案。
答案 0 :(得分:3)
没有自动化方法,但您可以通过创建自定义JsonNodeFactory来创建自定义ObjectNode - 然后您可以覆盖用于添加和访问条目的方法。
答案 1 :(得分:0)
此功能自2.5(2015年1月)开始可用:
ACCEPT_CASE_INSENSITIVE_PROPERTIES
该功能将允许对传入JSON进行更宽容的反序列化。如果启用,则将使用它们的小写字母等效项来匹配Bean属性,这意味着任何大小写组合(输入和匹配的名称均由小写字母规范化)应该起作用。 请注意,这存在额外的性能开销,因为在存在大写字母的情况下,比较之前传入的属性名称需要小写。但是,已经小写的名称的开销应该可以忽略不计。
功能默认情况下处于禁用状态。