JSON格式化 — 美化、压缩与校验
JSON美化、压缩、校验和键排序,出错时精确到行列
在浏览器中处理 · 不上传任何内容
功能简介
JSON格式化工具可以把挤在一行里的 JSON 变成带缩进、易读的文本,也可以去掉所有多余的空白让它更小。查看接口返回的数据、整理配置文件、找出语法出错的位置时都能用上。结果会随输入实时更新,不需要点任何按钮。
使用方法
- 把 JSON 粘贴到输入框。
- 选择 2 个空格、4 个空格或 Tab 缩进,或者选择“压缩”。
- 如果希望按字符编码给键排序,打开“键排序”。对象里嵌套的对象、数组里的对象都会一并排序。
- 复制结果。如果有错误,会显示行号和列号,从那里开始修改即可。
处理规则
- 语法遵循 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会被发送到服务器吗?
不会。所有处理都在你的浏览器中完成,不会上传或保存任何数据。