DevToolPal
简

JSON5 转 JSON

把 JSON5 或 JSONC(带注释、尾逗号、无引号键、单引号)转换成严格的标准 JSON。

本地处理,不上传

选项

缩进

输入

0 字符 · 0 B

输出

0 字符 · 0 B

这是什么

JSON5 是为手写文件设计的 JSON 扩展。它允许注释、尾逗号、不加引号的对象键、单引号字符串,以及几种更顺手的数字写法。Babel、一些打包工具和很多应用都接受 JSON5 或 JSONC(带注释的 JSON,tsconfig.json 和 VS Code 设置用的就是它)作为配置格式。

但很多解析器、接口和编程语言只接受严格的 JSON。这个转换器读取 JSON5 或 JSONC,输出任何 JSON 解析器都能接受的标准 JSON:所有键都用双引号,没有注释,没有尾逗号,数字都写成十进制。

怎么用

  1. 粘贴 JSON5 或 JSONC,上传 .json5、.jsonc 或 .json 文件,或点 示例。
  2. 选择 缩进:2 或 4 个空格,或选 压缩 输出成一行。
  3. 选择 Infinity 和 NaN 的处理方式:转成 null、转成字符串,或者报错。
  4. 复制或下载生成的 JSON。

如果输入有语法错误,提示会给出行号和列号,可以直接跳到出错的位置。普通 JSON 也是合法的 JSON5,所以也可以用它检查文件能否解析,顺便重新缩进。

示例

下面这段 JSON5 配置:

// Server settings
{
  host: 'localhost',
  port: 0x1F90,      // 8080
  ratio: .5,
  tags: ['api', 'v2',],
}

会变成这样的严格 JSON:

{
  "host": "localhost",
  "port": 8080,
  "ratio": 0.5,
  "tags": [
    "api",
    "v2"
  ]
}

注释被删除,键和字符串加上双引号,十六进制数字和省略了整数部分的小数改写成十进制,尾逗号被去掉。

会转换哪些内容

  • 删除 // 行注释和 /* */ 块注释。
  • 不加引号的键(如 port)和单引号字符串(如 'localhost')改成双引号。
  • 行尾用反斜杠续行的字符串合并成一个字符串。
  • 十六进制(0xFF)、省略整数或小数部分的小数(.5、5.)和显式正号(+3)改写成普通十进制数。
  • 去掉对象和数组里的尾逗号。
  • 同一个键出现两次时,和 JavaScript 一样取最后一个值。

常见问题

› JSON5 和 JSONC 有什么区别?

JSONC 是在 JSON 基础上加了注释(VS Code 里还允许尾逗号)。JSON5 走得更远:无引号键、单引号字符串、多行字符串、十六进制数字、省略整数或小数部分的小数,以及 Infinity 和 NaN。JSON5 是 JSONC 的超集,所以本工具两种都能读。

› 注释会保留吗?

不会。标准 JSON 没有注释语法,所以注释会被删掉。如果需要保留,请把 JSON5 文件作为源文件,再从它生成 JSON。

› Infinity 和 NaN 会怎么处理?

严格的 JSON 无法表示它们。默认转成 null,和 JavaScript 的 JSON.stringify 一样。也可以选择转成字符串,或者直接报错并指出具体路径。

› 数据会上传吗?

不会。解析和转换都在浏览器里完成,带密钥的配置文件不会离开你的设备。