gpt4 book ai didi

java - 通过 Jackson 进行 JSON 重复属性验证

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:55 25 4
gpt4 key购买 nike

我使用 Jackson 并想检查输入的 JSON 字符串是否包含重复的属性,例如:

{"a": 1, "a": 0}

以下Jackson片段处理输入字符串没有任何错误甚至返回值:


JsonNode jsonSelect = mapper.readTree("{ A : 1, A : 0}");
System.out.println(jsonSelect.getFieldValue("A"));//打印 0

我有机会通过 Jackson 验证重复项吗?

附言JSON 格式是否完全支持重复的属性?我在 specification 中没有找到关于它的任何限制。 .此外,org.json.JSONObject 为重复项抛出异常,但没有给我答案 - 是 {"a": 1, "a": 0} 好吧-按标准形成。

最佳答案

JSON 规范表明重复项不被视为有效,但解析器不需要对它们做任何事情。从实际的角度来看,跟踪所有可见的属性会增加开销,这在流式解析器级别可能没有意义。

至于 jackson ,它曾经在数据绑定(bind)级别进行重复检测,但我认为目前还没有启用。在处理 map 时可以很容易地添加它。如果这是您想要的,提交功能请求或询问用户列表可能是有意义的(尤其是看看其他人是否也想要此功能,从而更有可能很快添加)。

如果你只想做验证,你可以创建一个 Map 子类,让它在重复时抛出异常。或者,只需在子类中设置一个标志,您可以检查是否愿意。

关于java - 通过 Jackson 进行 JSON 重复属性验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com