【问题标题】:Detecting duplicate entries in a JSON list of objects检测 JSON 对象列表中的重复条目
【发布时间】:2026-01-09 05:25:04
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java json list object duplicates


    【解决方案1】:

    好吧,Jackson 在其data binding extension 中确实有一个deserialization feature,可以满足您的需要:FAIL_ON_READING_DUP_TREE_KEY 将导致解析器在读取重复键时失败。

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

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

    【讨论】:

    • 感谢您的帮助!为了检查数组中的重复项,我找到了一个名为 uniqueItems 的 json 模式验证关键字,它似乎工作正常。
    最近更新 更多