先看懂结构,再调整缩进
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 压缩
压缩会解析后重新序列化,移除排版空白,并非 ZIP 压缩。重复键和超出 JavaScript 安全整数范围的数字不保证保真;大型整数标识应使用字符串。
标准 JSON 不等于 JSONC
标准 JSON 不接受注释和尾随逗号。明确开启 JSONC 后可接受这两种语法:格式化可保留注释,压缩则输出不含注释的标准 JSON。未加引号的键、NaN 和 Infinity 在两种模式下都无效。
✓ 标准 JSON:字符串、数字、布尔值、null、数组和对象
× 两种模式都不接受:未加引号的键、NaN 和 Infinity
先通过 JSON 校验,再运行 JSONPath 查询
先完成校验,再使用根节点、成员、数组索引或通配选取。目前不支持完整 JSONPath 语法,例如递归下降、过滤器和切片。
$[0].id$.users[*].email$.orders[*].status运行这些 JSON 实例
先对照输入与预期结果,再把同一份数据和选项载入编辑器。
载入实例会替换当前输入和处理选项。
格式化标准 JSON 数据
格式化 · 2 空格缩进 · 关闭 JSONC · 关闭键名排序 · JSONPath 根节点。
输入
{"user":{"id":17,"roles":["editor"]},"active":true}预期结果:保留相同解析值的嵌套对象,并显示便于阅读的缩进。
{
"user": {
"id": 17,
"roles": [
"editor"
]
},
"active": true
}把带注释的配置转为标准 JSON
压缩 · 开启 JSONC · JSONPath 根节点。关闭 JSONC 后,可以看到同一输入为何无法按标准 JSON 解析。
输入
{
// local development
"port": 3000,
"enabled": true,
}预期结果:序列化后的 JSON 不再包含注释和尾随逗号。若选择格式化并开启 JSONC,则可保留注释。
{"port":3000,"enabled":true}继续处理数据的下一步
语法正确不代表必填字段和类型正确;继续按你的 schema 校验数据。
YAML 和 TOML 应交给配置工具处理,不能直接当成 JSON 解析。
两份数据使用相同的缩进和键名排序设置,再比较版本差异。
用快捷键随时打开格式化与检查工具,并在本地离线处理。