全部指南
数据

在解析器丢弃重复JSON键之前找到它们

格式化可能隐藏重复键。在选择保留哪个值之前,找到两个定义。

这段 JSON 很短,看起来一眼就能检查完:

{
  "theme": "light",
  "theme": "dark"
}

但应用到底应该使用哪个主题?有些格式化工具会先解析对象,再重新输出。这时可能只剩下一个值,你还没注意到冲突,它就已经被隐藏了。

语法能通过,不代表重复键没问题

JSON 标准建议同一对象中的名称保持唯一。重复名称不一定违反 JSON 语法,但不同程序的处理方式并不一致:有的保留最后一个值,有的拒绝整个对象,也有的会保留两个值。

JavaScript 在这个例子中会保留最后一个:

JSON.parse('{"theme":"light","theme":"dark"}').theme
// "dark"

这只是解析器的处理规则,不能证明第二个值就是对的。对于配置文件,第一个值可能才是你想保留的。

先找到两处定义,再修改

下载重复键示例,用 CozyToolkit 的 JSON 格式化器打开。

  1. 点击 打开 JSON,或把示例粘贴到 您的JSON。
  2. 查看高亮字段和编辑器下方的问题列表。这个示例的第二个键位于第 3 行、第 3 列。
  3. 点击问题即可跳到对应位置。显示首次定义 会带你回到第 2 行、第 3 列。
  4. 对照配置要求、API 数据结构或原始导出,确认哪个值应该保留。修改前先备份;复制原始内容 可以保留原样输入。
  5. 删除不需要的属性。问题解决后,检查输出,再点击 复制格式化结果 或 下载。

只要还有重复键,格式化器就不会生成格式化结果。排序或调整缩进无法决定哪个值是正确的。

假设这个例子中需要的是深色模式,修正后的文件就只保留该设置。这是我们明确做出的选择,工具不会代替你判断。

不同对象可以使用相同的键名

下面两个属性分别属于不同对象:

{
  "editor": { "theme": "light" },
  "preview": { "theme": "dark" }
}

每个对象内部都没有重复键。搜索“theme”会找到两处,但出现次数本身不足以说明有问题。把不同对象的示例文件放进格式化器,不应看到重复键提示。

如果确实需要保存多个值,可以考虑数组,前提是接收 JSON 的程序支持这种结构。为了消除报错而随意改键名或值的类型,可能让应用无法读取数据。

转义字符也可能藏着重复键

这个对象用了两种写法,解码后却是同一个键:

{"theme":"light","\u0074heme":"dark"}

其中的转义字符代表字母 t,所以两个名称解码后都是 theme。检查器同样会标记它。你可以下载转义键示例试试。

检查大型文件时,需要能理解 JSON 结构的工具,不能只搜索重复词。我们的工具支持最大 5 MB 的文件、200,000 个值和 100 层嵌套。如果一次显示了 100 个问题,先修复这些,再继续检查。超出这些限制的文件,可以使用明确支持重复键检测的本地流式校验工具,确保它在丢弃重复值之前就能发现问题。

没有报错,能说明什么

没有重复键提示,说明这类冲突已经解决,并不代表文件中的价格、权限、网址或配置值都正确。还需要核对数据结构要求,以及实际使用它的应用。

2026 年 10 月 1 日,我们用工具实际采用的检查器测试了四个示例文件,核对了问题的行列位置,确认重复键会阻止格式化,而修正版和不同对象的示例可以通过。测试结果包含这些检查,以及 JavaScript 的解析结果。检查在浏览器中完成,不会由 AI 模型决定保留哪个值。