编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 格式化 / JSON格式化

JSON格式化

把 JSON 排版成易读格式。

输入
结果

这个工具能做什么

接口返回的 JSON 常常被压缩成一整行,转义字符、嵌套对象和数组挤在一起,肉眼几乎没法定位某个字段。这个工具做的事很直接:把你粘进来的 JSON 字符串解析后重新序列化,按层级加上换行和缩进,让每一层对象、每个数组元素各占一行,同时校验这段文本是不是合法 JSON。这个过程也常被叫做 JSON 美化。如果解析失败,它会提示错误大致出在哪个位置,方便你回去改。工具不改变数据本身,只改变排版,格式化前后表示的是同一个值。

它的核心是一次「解析加再序列化」。工具先用 JSON 解析器把文本读成内存里的数据结构,也就是对象、数组、字符串、数字、布尔和 null,这一步同时完成了语法校验——只要有多余的逗号、缺失的引号、用单引号当字符串边界、或者键名没加引号这类问题,解析就会在出错的字符位置抛出异常。解析通过后,再用带缩进参数的序列化(相当于 JSON.stringify 的第三个参数指定 2 或 4 个空格)把数据结构重新写成带层级的文本。因为中间经过了标准解析,输出一定是严格合法的 JSON,字符串里的 Unicode 转义和 UTF-8 字符也会按规范处理。整个解析和格式化都在浏览器本地完成,粘进来的数据不会上传到服务器。

最常见的用法是调试接口。比如你从浏览器 Network 面板复制了一段响应,是被压成一行的几千字符,粘进来格式化后,嵌套的 data、list、分页字段立刻层次分明,你能一眼看到某个字段是不是 null、数组里有几个元素。另一个场景是核对配置文件或结构化日志,很多服务把日志按 JSON 一行一条打印,格式化后能快速确认字段拼写和值的类型对不对。单独的校验能力也很有用:写完一段手工拼的 JSON,先丢进来验证合不合法,比等程序跑起来报错再排查要快得多。

有几点需要留意。JSON 标准本身不支持注释和尾逗号,也不允许键名用单引号,所以从 JavaScript 代码里直接抠出来的对象字面量可能校验不过,因为 JS 对象并不等于 JSON,需要先改成合法格式。格式化只是重排版,不会帮你解 URL 编码Base64,如果某个字段的值是一段被转义的 JSON 字符串,你会看到它带着反斜杠原样显示,得单独再解一层。另外超大文件(比如几十兆的导出数据)在浏览器里解析会比较吃内存,这类情况更适合用命令行工具处理。

JSON格式化是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json格式化”、“json在线格式化”、“json美化”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

为什么我的 JSON 格式化时提示语法错误?
多半是结构不合法:常见的是对象或数组末尾多了一个逗号(尾逗号)、键名或字符串用了单引号而不是双引号、括号没配对,或者复制时混进了不可见字符。工具会指出出错的大致位置,从那里往前检查即可。
JSON 和 JavaScript 对象字面量是一回事吗?
不是。JSON 是更严格的子集:键名必须用双引号包起来,不能有注释和尾逗号,值也不支持 undefined、函数和单引号字符串。从 JS 代码里直接复制的对象往往不是合法 JSON,需要先规范化再校验。
格式化会改变数据内容或字段顺序吗?
不会改变值,格式化只是加换行和缩进。默认保持对象里键的原有顺序、不排序,数字、布尔、null 都原样保留;如果需要按键名排序,那是另一种功能,本工具默认不做。
字段值里是一段带反斜杠的字符串,格式化后为什么没展开?
那说明这个字段的值本身是一个被转义的 JSON 字符串,在外层 JSON 看来它只是普通文本,所以原样保留了反斜杠。你需要把这段字符串单独取出来再格式化一次,才能看到里面的结构。
数据会上传到服务器吗?大文件能处理吗?
解析和格式化都在你的浏览器本地进行,不会上传。文件大小主要受浏览器内存限制,一般几百 KB 到几 MB 没问题;几十兆的超大文件建议用 jq 之类的命令行工具处理更稳妥。

相关工具

查看全部「格式化」工具 →

相关名词解释