检测JSON对象列表中的重复条目

时间:2014-05-21 21:37:25

标签: java json list object duplicates

我在java中解析了一个JSON文件。它有几个对象列表,如下所示:

{
    "phoneNumbers": [
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "home",
            "number": "212 555-1234"
        },
        {
            "type": "fax",
            "number": "646 555-4567"
        }
    ]
}

它是一个敏感的输入文件,并且不能覆盖重复的条目。程序在处理特定列表时使用for循环和映射检查重复项,但是我想在解析文件时一次性检查整个文件中的重复项,以便在出现错误时程序在运行其他任何内容之前停止。

我想知道是否有用于java的JSON解析器,它将检测列表中的重复对象条目并提供消息。此外,是否有任何解析器会通知您,如果声明的对象被覆盖,因为在同一个文件中声明了另一个具有相同名称的对象?

1 个答案:

答案 0 :(得分:1)

好吧,Jackson在其deserialization feature中确实有data binding extension可以满足您的需求:FAIL_ON_READING_DUP_TREE_KEY会导致解析器在读取重复键时失败。< / p>

也就是说,您可以通过使用自定义Map类来支持反序列化自定义对象的任何解析器实现相同的功能,如果遇到重复键,则抛出异常,而不是仅更新值。 ..

至于在列表中查找重复条目,如果插入重复条目,如何反序列化为抛出异常的自定义LinkedHashSet子类?