JSON 在线格式化与美化

把压缩成一行或格式混乱的 JSON 重新缩进排版,实时校验语法并定位错误行列,支持导入文件与下载结果。

接口返回的 JSON 常常是一整行,从日志里复制出来时缩进又往往已经乱掉,肉眼几乎无法核对字段层级。这个工具把文本重新解析后按固定缩进输出,每一层嵌套对齐,右侧同步给出树状结构,先看清层级关系再改数据。语法有错时不会静默失败,而是给出具体行号、列号和该行内容。

本站的做法是纯前端本地计算:格式化、校验、树状预览全部由浏览器里的 JavaScript 完成,输入的 JSON 不经过任何服务器,也不会写入日志或缓存。断网状态下页面同样可用,处理内部接口数据、配置文件和带业务字段的样例数据时不必担心外泄。

缩进方式与重排规则

工具栏提供 2 空格与 4 空格两种缩进按钮,格式化引擎本身也接受 Tab 缩进。需要说明的是,格式化并不是替换空白字符:工具先用 JSON.parse 解析文本,再按固定缩进重新序列化,所以输出的每一项都严格符合 JSON 标准。这会带来几个副作用:数字 1.0 会变成 1、1e3 会变成 1000、-0 会变成 0;字符串里写成 \u4e2d 的转义会还原成汉字;同一个对象里重复出现的同名 key 只保留最后一个。字段顺序按原文保留,不会被打乱。

语法错误的定位方式

校验是即时的,每次输入或粘贴都会重新解析一次,底部状态栏随之在「有效 JSON」与「存在语法错误」之间切换。报错信息包含解析器给出的原因、出错所在的行号与列号,并附上该行去掉首尾空白后的片段,方便在大文件里快速跳转。行列号由错误位置的字符偏移量换算得出,列号按字符计而不是按字节计,因此一行里有中文时,显示的列号会小于按 UTF-8 字节计算的结果。高频错误集中在四处:少写或多写逗号、字符串用了单引号、key 没有加双引号、末尾多了一个逗号。

双栏视图与输出操作

视图分双栏对照与单栏全宽两种。双栏模式下左侧是可编辑的输入区,右侧可以在代码高亮与树状结构之间切换:代码高亮用于核对最终文本,树状结构用于按层级展开、搜索并复制单个节点。工具栏的压缩、转义、Key 排序等操作都会直接改写左侧内容,改写后仍可继续编辑。输出侧支持复制、下载为 .json 文件(文件名带时间戳),也可以导入本地 .json、.txt、.js、.ts 文件作为输入。底部状态栏持续显示字符数、行数、字节大小、Key 总数与最大嵌套深度。

广告

常见问题

JSON 格式化后体积会变大吗?
会变大。2 空格缩进通常让文件膨胀一到三成,嵌套越深增加越多,因为这些空格纯粹是可读性成本。JSON 的语义完全由结构决定,换行和缩进不影响解析结果,所以传输时应该用压缩后的单行版本,只在阅读和排查问题时使用格式化版本。
格式化会不会打乱我的字段顺序?
不会。工具解析后按原有键顺序重新序列化,字段先后关系保持原样。但有两个例外:数值写法会被规范化,例如 1.0 变成 1、1e3 变成 1000;同一个对象里出现重复 key 时只保留最后一个,因为 JSON.parse 遇到重复键就是用后者覆盖前者。
为什么格式化之后中文没有被转成 \uXXXX?
因为标准 JSON 允许字符串里直接出现中文,序列化时没有必要做 Unicode 转义。如果你需要输出 \u4e2d 这种形式,例如给只接受 ASCII 的老系统使用,可以在格式化之后再用中文转 Unicode 功能处理一次。
最大能处理多大的 JSON 文件?
没有硬性上限,取决于浏览器内存和编辑器渲染能力。几 MB 的文本通常能正常打开,但十万行以上的文档,代码高亮与树状视图会明显变慢。此时建议改用单栏全宽模式、不打开树状预览,或者把数据按业务拆小后再处理。

相关工具

广告