JSON 格式化
免费 JSON 格式化工具:一键美化或压缩,语法错误直接标出第几行第几列,树形视图可展开折叠,大整数不丢精度。无需注册,数据只在浏览器处理不上传。
- 报错定位行列
- 树形展开折叠
- 大整数不丢精度
- 一键压缩
输入正确的 JSON 后,这里会显示可展开折叠的树形结构。
数据只在你的浏览器中处理,不会上传也不会保存。
🔒 所有计算都在你的浏览器内完成,数据不会上传到任何服务器。
什么时候会用到
- API 调试:把接口返回的一整行 JSON 格式化成易读的样子,用树形视图查找字段。
- 修复配置文件:配置文件少了逗号或引号时,直接标出错在第几行第几列。
- 上线前压缩:一键压缩成一行,减小文件体积或方便粘贴进代码。
- 对比前先整理:勾选“键名排序”让两份 JSON 的字段顺序一致,再用文本对比工具比较。
使用说明
- 把 JSON 粘贴到左侧输入框,或点“打开文件”读取 .json 文件;输入时会实时校验语法,右侧同步显示树形视图。
- 选择缩进(2 个空格、4 个空格或 Tab),点“格式化”排成易读的多行格式,点“压缩”变成一行;勾选“键名排序”会把所有对象的键按字母排序。
- 有语法错误时会显示错在第几行第几列,点“定位错误”直接选中出错的字符;完成后点“复制”带走结果。
实际示例
对象最后多一个逗号:输入四行 {、"name": "Pockez",、"tags": ["json", "tool"],、},会提示“第 4 行第 1 列:最后一项后面多了逗号”。错误指在读到 } 的位置,要删掉的是第 3 行末尾的逗号。
大整数不丢精度:输入 {"orderId":9007199254740993,"price":1.50},用 JavaScript 的 JSON.parse 读取会得到 9007199254740992,价格变成 1.5;本工具格式化后仍是 9007199254740993 和 1.50,并提示“含 1 个超出安全范围的大整数”。
键名排序:输入 {"name":"Alice","age":30,"tags":["a","b"]},勾选“键名排序”、缩进 2 个空格后格式化,键的顺序变成 age、name、tags,而 tags 数组里 a、b 的顺序不变。
结果怎么看
- 显示“JSON 格式正确”表示整份数据符合 JSON 标准(RFC 8259),任何编程语言都能正确读取。
- 错误提示的行和列是解析器第一个读不懂的位置,真正要改的地方往往在它前面一点,比如漏了逗号时会指在下一个键的开头。
- 树形视图中 { 3 } 表示这个对象有 3 个字段,[ 2 ] 表示数组有 2 个元素;带虚线下划线的数字是大整数,鼠标移上去会有说明。
- 出现大整数提示时数据本身没有错,但接收方如果用 JavaScript 等双精度浮点数读取会丢精度,建议改成字符串传递,或让对方用 BigInt 处理。
原理与计算方法
- 使用自研的解析器按 RFC 8259 和 ECMA-404 的语法逐字读取,遇到第一个错误就停下并报告位置,不依赖浏览器内置的 JSON.parse,因此各浏览器显示的错误位置和说明一致。
- 格式化和压缩只重新排列空格与换行,字符串保留原本的转义写法(\u00e9 仍是 \u00e9),数字保留原本的写法(1.50、1e400 不会被改),对象键的原始顺序和重复的键也都保留。
- 键名排序按 UTF-16 码元顺序(与 JavaScript 默认排序相同)递归排序所有对象,相同的键保持原有先后顺序,数组元素顺序不变。
- 绝对值超过 2^53−1(9007199254740991)的整数会被标记为大整数,带小数点或科学计数法的数字不在此列。
适用限制
- 只接受标准 JSON:注释、末尾逗号、单引号、NaN、undefined 等 JSON5 或 JavaScript 写法都会被判为错误。
- 一次只报告第一个错误,改好后会自动继续检查下一个。
- 嵌套超过 1000 层会停止解析并提示,避免浏览器卡死。
- 几十 MB 的大文件可能让浏览器变慢;树形视图只预先展开前两层,“全部展开”会创建所有节点,大文件建议只展开需要的部分。
常见问题
为什么我的 JSON 校验不通过?
最常见的原因是:最后一项后面多了逗号、用了单引号而不是双引号、键名没加引号、里面有 // 注释,或写了 undefined、NaN。这些在 JavaScript 里能用,但标准 JSON 不允许。错误提示会指出位置和原因。
数字太大会不会被改掉?
不会。很多在线工具用 JavaScript 的 JSON.parse 处理,超过 9007199254740991 的整数(比如订单号 9007199254740993)会被改成相近的数字。本工具按原样保留,并提示数据里有几个这样的大整数。
格式化会改变我的数据吗?
不会。格式化和压缩只调整空格和换行,字符串、数字的写法(例如 1.50)、键的顺序都保持不变。只有勾选“键名排序”时才会调整对象里键的顺序,数组顺序始终不变。
我的数据会被上传吗?
不会。解析、格式化和树形视图都在你的浏览器里完成,数据不会发送到服务器,也不会被保存,含个人信息或密钥的配置文件也可以放心处理。
JSON 可以写注释吗?
标准 JSON 不支持 // 或 /* */ 注释,会被判定为错误。需要注释的配置文件通常改用 JSONC、JSON5 或 YAML 等格式。
怎么把 JSON 转成 Excel 或 CSV?
用本站的“CSV 转 JSON”工具,选择“JSON → CSV”并粘贴数据,下载的 CSV 用 Excel 打开即可(保留“添加 BOM”,中文才不会乱码)。
JSON 和 JavaScript 对象有什么区别?
JSON 是纯文本的数据格式:键名必须用双引号、不能有末尾逗号、不能放函数或 undefined;JavaScript 对象的写法则宽松得多。
参考来源
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format — IETF
- ECMA-404: The JSON data interchange syntax — Ecma International
- Number.MAX_SAFE_INTEGER — MDN Web Docs