java-通过Jackson进行JSON重复属性验证
作者:互联网
我使用Jackson,并想检查输入的JSON字符串是否不包含重复的属性,例如:
{“ a”:1,“ a”:0}
跟随Jackson片段处理输入字符串,没有任何错误,甚至返回值:
JsonNode jsonSelect = mapper.readTree(“ {A:1,A:0}”);
System.out.println(jsonSelect.getFieldValue(“ A”)); //打印0
我有机会通过杰克逊验证重复项吗?
附言JSON格式是否完全支持重复属性?我没有在specification中找到关于它的任何限制.org.json.JSONObject还会为重复项抛出异常,该异常无法给我答案-是{“ a”:1,“ a”:0}格式正确达到标准.
解决方法:
JSON规范指示重复项被认为无效,但解析器不需要对其进行任何处理.从实际角度看,跟踪所有可见属性会增加开销,这在流解析器级别可能没有意义.
至于Jackson,它曾经在数据绑定级别进行重复检测,但是我认为目前还没有启用.在处理地图时,可以很容易地添加它.
如果这是您想要的,则提出功能请求或在用户列表中询问可能是有道理的(尤其是查看其他人是否也希望使用此功能,从而使其有可能很快被添加).
如果您只想验证,则可以创建一个Map子类,使其在重复项上引发异常.或者,只需在子类中设置一个标志,即可检查您是否愿意.
标签:jackson,specifications,json,java 来源: https://codeday.me/bug/20191208/2092083.html