JSON 修复

把不严格的 JSON 收成标准 JSON:注释、单引号、没加引号的键、末尾多余的逗号都会处理。

差一点点就能解析的 JSON

编辑器和日志里的 JSON 常带注释、单引号、没加引号的键,或在右括号前多一个逗号。严格解析会拒绝。这个页面把这些写法收成标准 JSON 并排版。注释会被删掉,不会留在结果里。树形编辑用 JSON 格式化。对比两段值用 JSON 对比。

怎么用

  1. 把不严格的文本贴进输入框。边输入边更新默认开着,改字时结果会跟着变。转换只做一次同样的步骤。
  2. 全部清除会清空输入和结果。
  3. 复制结果复制的是修好的 JSON。
  4. 显示示例会填入 {name: 'Ada', n: 1, tags: ['a',],} 和一行 // note。结果是 name 为 Ada、n 为 1、tags 里有 a 的对象。注释不在结果里。

会改写什么

字符串外面的 // 和 /* */ 会去掉。单引号字符串会变成 JSON 字符串,\n、\t、\r、\'、\" 和 \\ 会变成对应字符。裸词会加上引号,但 true、false、null 不论大小写都保持关键字。undefined、NaN、Infinity 变成 null。逗号后面只剩空白或注释,然后就是 } 或 ] 时,这个逗号会丢掉。结果用两个空格缩进。已经在双引号里的文字原样保留。修完仍不是 JSON,或输入是空的,会提示 JSON 无效。

用在哪

  • 从 JavaScript 里抄出来的配置。
  • 接口示例在结尾多写了一个逗号。
  • 日志里对象旁边有一行 // 注释。

常见问题

注释不见了。

修复的目标是标准 JSON。注释不属于 JSON,所以是删掉,不是存下来。

引号里的数字还是字符串。

已经在双引号里的内容不会改。只会处理裸词和单引号字符串。