博客
简体中文

JSON格式化 — 美化、压缩与校验

JSON美化、压缩、校验和键排序,出错时精确到行列

在浏览器中处理 · 不上传任何内容

结果

功能简介

JSON格式化工具可以把挤在一行里的 JSON 变成带缩进、易读的文本,也可以去掉所有多余的空白让它更小。查看接口返回的数据、整理配置文件、找出语法出错的位置时都能用上。结果会随输入实时更新,不需要点任何按钮。

使用方法

  1. 把 JSON 粘贴到输入框。
  2. 选择 2 个空格、4 个空格或 Tab 缩进,或者选择“压缩”。
  3. 如果希望按字符编码给键排序,打开“键排序”。对象里嵌套的对象、数组里的对象都会一并排序。
  4. 复制结果。如果有错误,会显示行号和列号,从那里开始修改即可。

处理规则

  • 语法遵循 RFC 8259(ECMA-404)中的 JSON:键和字符串只能用双引号,不允许注释和末尾逗号。
  • 错误位置的行号和列号都从 1 开始。\n、\r\n 和单独的 \r 都算一次换行。列数按字符(码位)计算,一个 emoji 只占一列,出错行下方的插入符号会照原样保留 Tab。溢出为 Infinity 的数字(如 1e999)会变成 null 并给出警告;嵌套超过 512 层时会明确提示不支持。
  • 键排序作用于每一层,按代码单元顺序排列(大写字母在小写字母之前),数组的顺序保持不变。同一个对象中出现两次的键({"a":1,"a":2})按 JSON 规则只保留最后一个值,所以仍然会输出结果,但会有警告指出该键以及重复出现的行号和列号。受 JavaScript 对象机制的限制,"1"、"2" 这类整数形式的键无论选项如何,总是按数字顺序排在最前面。
  • 输出会原样保留中文、韩文和 emoji,只转义 JSON 规定必须转义的字符,例如 \n 和 \"。"A" 这样的 Unicode 转义会写成 "A"。
  • 数字按 JavaScript 的 Number 读取。超过 2^53 的整数无法精确保留,工具会给出警告。

示例

输入 选项 结果
{"b":1,"a":{"d":2,"c":3}} 压缩 + 键排序 {"a":{"c":3,"d":2},"b":1}
{"name":"张三"} 2 个空格 多行输出,"name": "张三"
{"a": 1,} — 第 1 行第 9 列:意外字符 }
{"id": 12345678901234567890} 压缩 {"id":12345678901234567000}(显示警告)

常见问题

能看出JSON错在哪里吗?

能。工具从头扫描输入,报告第一个违反语法的字符所在的行号和列号,并显示那一行,在出错位置下方标出插入符号。位置由工具自己计算,不依赖浏览器的报错文字,所以在任何浏览器中结果都一样。

支持注释或末尾逗号吗?

不支持。只接受 RFC 8259 定义的严格 JSON。注释、末尾逗号、单引号字符串和不带引号的键都会作为错误报告,并给出位置。

很大的数字会被改变吗?

有可能。工具使用 JavaScript 的 JSON 解析器,超过 9007199254740991(2^53-1)的整数会被舍入到最接近的可表示值。输入中含有这类数字时会显示警告。如果每一位都很重要,请把这么大的 ID 写成字符串。

我的JSON会被发送到服务器吗?

不会。所有处理都在你的浏览器中完成,不会上传或保存任何数据。

没找到想要的工具?