先看懂结构,再调整缩进
JSON 格式化在线工具 — 校验、压缩与 JSONPath 查询
格式化能让合法 JSON 更好读,却不能证明有语法错误的内容可信。DevSexy 将排版和校验分开处理,并明确标出解析在哪一行、哪一列中断。
原始 JSON
{"user":{"id":17,"roles":["editor"]}}解析结果
对象 · 1 个根级键 · 2 个嵌套值
节点路径
$.user.roles[0] → “editor”
从原始 JSON 到可定位的树形结构
错误定位
行号和列号只是线索,真正的错误往往出现在前一个字符。
漏写逗号或引号时,解析器可能到下一个字段才确认语法无法继续。诊断结果会把原始报错、字符偏移、行列位置和附近源码放在一起,方便你修复真正出错的边界。
2 "name": "Mole" 3 "active": true 4 "roles": ["admin"] ▲ 此字段前缺少逗号
排版选项改变代码差异,不改变数据
缩进方式
2 空格更紧凑,4 空格更便于逐层查看,Tab 则适合遵循编辑器设置;三者都会保留解析后的值。
键名顺序
按键名排序能让测试数据和快照更稳定,但也可能打乱人工编写配置时的阅读顺序,因此默认不启用。
JSON 压缩
压缩只移除不影响语义的空格、缩进和换行,不会压缩字符串、重命名键名,也不会降低数字精度。
标准 JSON 不等于 JSONC
注释、尾随逗号、未加引号的键、NaN 和 Infinity 常见于 JavaScript 相关配置,却不属于 RFC 定义的标准 JSON。应先明确诊断,不要把另一种语法悄悄改写成 JSON。
✓ 标准 JSON:字符串、数字、布尔值、null、数组和对象
× JSONC 扩展:注释和尾随逗号
先通过 JSON 校验,再运行 JSONPath 查询
对语法错误的文档执行查询,结果很容易产生误导。先完成校验并查看树形结构,再从可见节点中复制准确路径。
$[0].id$.users[*].email$..statusJSON 格式化常见问题
- 格式化会改变 JSON 的值吗?
- 不会。除非你主动开启键名排序,否则格式化只调整不影响语义的空格、缩进和换行。
- 可以格式化大型 JSON 文件吗?
- 可以。处理任务会交给 Web Worker,避免页面卡顿;工具会根据内容量自适应处理,而不是设置任意的字符数上限。
- 为什么报错位置在真正错误的后面?
- 解析器通常会报告语法已经无法继续的位置,因此漏写逗号、引号或括号时,报错可能出现在紧随其后的字符。
- JSONPath 和 JSON Pointer 是一回事吗?
- 不是。JSONPath 用查询表达式选择一个或多个值;JSON Pointer 则用斜杠分隔的引用标记指向一个确定位置。