使用方法
- 粘贴 JSON、打开文件或尝试示例。
- 调整设置,结果会随输入更新。
- 复制或下载格式化结果。
认识 JSON
JSON 是用于交换结构化数据的文本格式,常见于 API 响应、配置文件和导出记录。它的值类型不多,方便在不同编程语言之间传递数据。
格式化让结构更易查看。缩进显示哪些值属于同一层级,换行让嵌套记录更易浏览。这些排版选择不会改变有效文档所表示的数据。
值与结构
JSON 文档包含一个值。根值可以是对象或数组,也可以是字符串、数字、布尔值或 null。对象将字符串名称与值关联,数组按有意义的顺序保存值。两者都可以嵌套。
| 类型 | 示例 | 含义 |
|---|---|---|
| 对象 | {"name": "Ada"} | 花括号中的命名属性。 |
| 数组 | ["red", "blue"] | 方括号中的有序序列。 |
| 字符串 | "Hello, world" | 用双引号包围的文本。 |
| 数字 | -12.5e2 | 十进制数字,可带指数。 |
| 布尔值 | true / false | 两个逻辑值之一。 |
| 空值 | null | 明确的空值,并非省略属性。 |
需要注意的语法
属性名和字符串必须使用双引号。名称与值之间用冒号分隔,对象成员和数组元素之间用逗号分隔。最后一个成员或元素后不要加逗号。注释、单引号和 JavaScript 表达式都不属于严格 JSON。
字面量 true、false 和 null 必须小写。数字使用十进制写法,可带负号、小数和指数。前导零、前导加号、NaN 和 Infinity 均无效。字符串内的引号、反斜杠和控制字符必须转义;换行必须写成 \n 这样的转义形式。
为了可靠地交换数据,对象名称应唯一。名称重复时,不同读取程序可能保留不同的值。格式化工具会报告并保留重复项,由你决定如何处理。仅通过语法检查,无法确认文档符合 API 约定或 JSON Schema。
格式化保留哪些内容
DevToolsy 验证输入,并调整原始 token 周围的空白。它保留 900719925474099312345、19.9900、1e+400、-0 等数字文本,以及字符串原始转义写法。这样可避免将数字解析为 JavaScript 浮点值后重新序列化造成的舍入。读取结果的应用仍会自行决定数值精度。
缩进、LF 或 CRLF 换行符及末尾换行属于输出约定。“排序键名”是独立的可选更改:它按解码后的名称,以确定且区分大小写的方式递归排列对象成员。数组顺序和重复名称的相对顺序保持不变。此功能便于阅读和比较差异,不是用于加密签名的规范化方案。
{"name":"Ada","roles":["developer","reviewer"],"active":true}{
"name": "Ada",
"roles": [
"developer",
"reviewer"
],
"active": true
}缩进改变显示方式。属性名、值和数组顺序保持不变。
最多支持 5 MiB UTF-8 输入、20 MiB 输出、128 层嵌套、250,000 个扫描 token,每次运行最长 10 秒。较大的文档可能需要性能更好的设备。
常见问题
自动格式化会更改输入吗?
不会。输入短暂停顿后,只读结果会更新,输入内容保持原样。自动格式化默认开启。关闭后,可点击“格式化 JSON”或按 Ctrl/⌘ + Enter 手动运行。
JSON 尚未输入完整时会怎样?
编辑期间,上一次有效结果仍会显示。当前输入和设置生成有效结果之前,“复制”和“下载”不可用。选择错误可跳转到输入中的对应位置。
格式化会舍入大数或更改字符串转义吗?
不会。原始数字 token 和字符串转义写法均保留,包括长整数、小数末尾的零、指数写法和负零。其他应用可能以不同精度解读这些数字。
排序键名会同时重排数组吗?
不会。键名排序只递归应用于对象。数组保留原顺序,重复名称也保留相对顺序。排序默认关闭。
格式化工具能修复注释或尾随逗号吗?
工具只接受严格 JSON,会报告无效语法,不会猜测如何修复。注释、单引号字符串、未加引号的键名和尾随逗号都需要在输入中修正。
JSON Beautifier 和 JSON Formatter 是一回事吗?
是的。本页的美化、pretty-print 和格式化都表示为 JSON 添加易读的缩进和换行。需要紧凑文档时,请使用 JSON 压缩工具。
JSON 会离开我的设备吗?
粘贴的文本和本地文件都在浏览器中处理。DevToolsy 不会上传 JSON,也不保存文档历史记录。如需保留,请在离开前复制或下载结果。