我在java中解析了一个JSON文件。它有几个对象列表,如下所示:
{
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
它是一个敏感的输入文件,并且不能覆盖重复的条目。程序在处理特定列表时使用for循环和映射检查重复项,但是我想在解析文件时一次性检查整个文件中的重复项,以便在出现错误时程序在运行其他任何内容之前停止。
我想知道是否有用于java的JSON解析器,它将检测列表中的重复对象条目并提供消息。此外,是否有任何解析器会通知您,如果声明的对象被覆盖,因为在同一个文件中声明了另一个具有相同名称的对象?
答案 0 :(得分:1)
好吧,Jackson在其deserialization feature中确实有data binding extension可以满足您的需求:FAIL_ON_READING_DUP_TREE_KEY
会导致解析器在读取重复键时失败。< / p>
也就是说,您可以通过使用自定义Map
类来支持反序列化自定义对象的任何解析器实现相同的功能,如果遇到重复键,则抛出异常,而不是仅更新值。 ..
至于在列表中查找重复条目,如果插入重复条目,如何反序列化为抛出异常的自定义LinkedHashSet
子类?