JSON 格式化
在线格式化、压缩与校验 JSON:可选 2/4 空格或 Tab 缩进、按键排序,非法输入直接指出第几行第几列,并统计键数量、嵌套深度、字符数与字节数。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
字符串转义 / 反转义
把普通文本转成 JSON 字符串字面量,或把 \n \uXXXX 之类的转义还原成文本;带首尾双引号时按 JSON 字符串解析。
这个工具能做什么
- 接口返回一长串压缩 JSON 时先格式化,看清嵌套结构再决定读哪个字段。
- 提交配置或代码前校验 JSON 是否合法:有语法错误会直接指出第几行第几列,不用靠肉眼看括号。
- 对比两份配置前先统一格式:勾选「键排序」让字段按字典序排列,再去比对会轻松很多。
- 嵌进只认 ASCII 的配置时,用转义功能把中文写成 \uXXXX,或者把 \n、\uXXXX 还原成可读文本。
示例
输入
{"name":"UniKit","version":2,"tags":["json","formatting"],"meta":{"stable":true,"score":9.5}}输出
{
"name": "UniKit",
"version": 2,
"tags": [
"json",
"formatting"
],
"meta": {
"stable": true,
"score": 9.5
}
}缩进选 2 空格。结果下方的统计为:键数量 6、最大嵌套深度 2、字符数 138、字节数 138(这段内容都是 ASCII,字符数与字节数相同)。
常见问题
键排序是深度排序吗?
是递归排序:每一层的对象键都按字典序(JavaScript 默认的字符串比较)重排,数组元素的顺序不变。所以嵌套对象的键也会被一起排好,适合用来做规范化后再比对。
为什么报错只给一个位置?
解析在遇到第一个语法错误时就会停止,因此只报告第一处。常见原因有:内容意外结束(括号或引号没闭合)、对象的键没有用双引号、键后面缺冒号、JSON 结束后还有多余内容。修好这一处再解析就能看到下一处。
键数量和嵌套深度是怎么算的?
键数量统计所有层级上对象的键总数,数组元素不算键;最大嵌套深度把根容器算作第 1 层,例如 {"a":[1]} 的深度是 2,而根节点是标量时深度为 0。字符数按输出文本的长度算,字节数按 UTF-8 计算,所以含中文时字节数会明显大于字符数。
压缩(Minify)和 JSON 压缩工具有什么区别?
这里的压缩只是去掉空白和换行、输出单行 JSON,不做任何数据压缩,体积减小有限。如果需要更小的传输体积,应该用 gzip/brotli 这类真正的压缩算法,或者改用 JSON Lines 之类的行式格式。
字符串转义那一块怎么用?
把普通文本转成合法的 JSON 字符串字面量(带首尾双引号),或者把 \n、\t、\uXXXX 之类的转义还原成真实字符。输入本身带首尾双引号时会按 JSON 字符串解析。勾选「非 ASCII 字符写成 \uXXXX」后中文会变成转义序列,适合嵌进只允许 ASCII 的配置。
关键词:jsonjson 格式化json formatterjson 美化json beautifyjson 校验json validator键排序sort keysminify