JSON 格式化工具怎么用
- 把 JSON 粘贴到输入框中,或直接输入。
- 选择缩进方式:2个空格、4个空格或制表符。
- 点击格式化进行美化输出,或点击压缩去掉所有可省略的空白。
- 如果输入无效,校验器会显示错误信息以及解析失败处的行号和列号。
- 可以开启键排序,按字母顺序排列对象的键,或把结果转换为 YAML 或 CSV。
- 复制输出结果,粘贴到需要的地方。
所有处理都在您的浏览器中完成:您的 JSON 不会上传到服务器,也不会被保存,因此可以放心格式化包含隐私数据的 API 响应、配置文件和日志。
什么是 JSON?为什么要格式化?
JSON(JavaScript Object Notation)是一种轻量的文本数据格式,由 RFC 8259 和 ECMA-404 标准化。它只由六种值构成:对象({})、数组([])、字符串、数字、布尔值 true 和 false,以及 null。正因为简单,几乎所有 REST API、许多配置文件和无数日志管道都在使用它。
机器并不在乎空白,所以通过网络传输的 JSON 常被压缩成一行。这样效率高,但人几乎没法读。格式化会加上换行和统一的缩进,让您一眼看清嵌套结构、发现缺失的字段,并在 diff 中对比两份文档。压缩则相反,适合把 JSON 嵌入请求或减小数据体积。
常见 JSON 错误及修复方法
JSON 比 JavaScript 对象字面量更严格。以下是校验器最常发现的错误:
| 问题 | 无效写法 | 有效写法 |
|---|---|---|
| 末尾多余逗号 | [1, 2, 3,] | [1, 2, 3] |
| 单引号 | {'name': 'Ada'} | {"name": "Ada"} |
| 键没有加引号 | {name: "Ada"} | {"name": "Ada"} |
| 注释 | // note 或 /* note */ | 删除注释,或改用 "_comment" 字段 |
| 非 JSON 值 | undefined、NaN、Infinity | null 或字符串 |
| 前导零 | {"id": 007} | {"id": 7} 或 "007" |
从 JavaScript 代码中复制出来的典型错误片段如下:
{
name: 'Ada Lovelace',
born: 1815, // year
languages: ['English', 'French',],
}
修正后的 JSON 给每个键和字符串都加上双引号,删除了注释,并去掉了两处末尾逗号:
{
"name": "Ada Lovelace",
"born": 1815,
"languages": ["English", "French"]
}
其他常见原因包括:字符串中有未转义的双引号或直接换行(请使用 \" 和 \n),以及最外层的闭合括号后面多出了字符。如果报告的位置看起来不对,请检查它上面一行:缺少的逗号通常要等解析器读到下一个值时才会被发现。
技巧与最佳实践
- 选定一种缩进并坚持使用。JavaScript 项目中最常见的是两个空格;Python 工具中常用四个空格。保持一致比选哪种更重要。
- 对比前先给键排序。JSON 对象是无序的,所以两份等价的文档可能看起来不同。给键排序后,版本控制中的 diff 和对比会清晰得多。
- 注意特别大的数字。JavaScript 用 64 位浮点数存储数字,所以大于 9,007,199,254,740,991(253 − 1)的整数在浏览器中解析时可能丢失精度。较大的 ID 请以字符串形式传输。
- 使用 UTF-8。RFC 8259 要求系统之间交换的 JSON 使用 UTF-8。
- 需要时进行转换。CSV 适合想在电子表格中打开的扁平对象数组;YAML 更方便手工编辑。需要双向转换时,可以试试 JSON ↔ YAML 转换器或 CSV ↔ JSON 转换器。
常见问题
JSON 允许写注释吗?
不允许。RFC 8259 和 ECMA-404 都不允许注释。有些工具接受 JSONC 或 JSON5 等扩展格式,但标准解析器会拒绝它们。请在校验前删除注释,或把说明移到普通字段中。
为什么我的 JSON 在 JavaScript 中能用,这里却显示无效?
JavaScript 对象字面量允许单引号、不加引号的键、末尾逗号、注释以及 undefined 之类的值,而 JSON 这些都不允许。在代码中请用 JSON.stringify() 生成有效的 JSON,不要手写。
格式化会改变我的数据吗?
格式化和压缩只改变各个记号之间的空白;键、值和数组顺序都保持不变。键排序会调整对象成员的顺序,但由于 JSON 对象是无序的,含义不会改变。
格式化和校验有什么区别?
校验是检查文本在语法上是否为正确的 JSON。格式化是用易读的缩进重新输出有效的 JSON。格式化工具会先校验,所以无法解析的文档不能被格式化。
可以把嵌套的 JSON 转换成 CSV 吗?
CSV 是扁平表格,最适合键相同的对象数组。嵌套的对象和数组在 CSV 中没有直接对应的形式,通常会被展平,或序列化后放进一个单元格。
更新于
评论
登录后即可为此工具评分。
分享技巧、提出问题,或说说这个工具对您是否有用。
还没有评论,来分享您的使用体验吧。