编程语言
首页 > 编程语言> > java-通过Jackson进行JSON重复属性验证

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