JSON 格式化
JSON 把数据写成少数几种形状:对象用花括号包住一组「键冒号值」,数组用方括号包住一串元素,再往下是字符串、数字、真假值和空值。机器不在乎排版乱不乱,人却需要缩进和换行才看得清。这页把压成一行的 JSON 重新排好,也能反向把带缩进的收成紧凑一行,方便读、也方便塞进配置或请求体。
校验是它的另一半价值:只要括号没配齐、逗号多写一个、字符串用了单引号,就会当场报错,并把浏览器解析器看到的原始信息摊给你——这类毛病埋在一大段文本里靠眼睛很难定位,格式化这一步正好把出错位置暴露出来。处理只在点按钮时发生,边打字不会自动跑。
它不改变数据本身,只改排版:格式化前后表示的是同一份内容,数组元素的先后不会被调换。唯一的可选改写是「键名排序」,勾上后会把每个对象里的键按名字重排,方便两份配置逐行对比时忽略书写顺序的差异。
怎么用
- 粘贴把要处理的 JSON 放进左侧输入框(占位「粘贴 JSON ...」)。框里预置了一小段示例,直接替换成你自己的内容即可,输入不上传、只在本地解析。
- 选缩进上方两个按钮选缩进宽度,只有「2 空格」和「4 空格」两档,没有制表符或一空格选项;它只影响格式化时的层级缩进,压缩时不涉及缩进。
- 可选排序要按名字重排对象里的键,就勾「键名排序」。它会递归处理每一层对象,但不改动数组元素的先后,也不改键的大小写,只是把同一层的键排个序。
- 格式化点「格式化」按当前缩进和是否排序重新排版,结果显示在右侧只读框。什么都没填就点,会弹「请输入 JSON」的提示,而不是静默产出空白。
- 压缩点「压缩」去掉所有用于展示的空白与换行,得到一行紧凑文本,适合放进链接、请求体或任何对体积敏感的地方。
- 复制或接力点「复制结果」把右侧内容拷走;点「结果转为输入」把结果搬回左框接着再处理,比如先格式化再排序、来回迭代几轮。
示例
默认那段 {"name":"xmi4","tags":["tool","json"],"nested":{"ok":true}},缩进选「2 空格」、不排序,点「格式化」{
"name": "xmi4",
"tags": [
"tool",
"json"
],
"nested": {
"ok": true
}
}数组仍按 tool、json 的原顺序,嵌套对象各多缩进一层;点「压缩」则收回成一行紧凑写法。
深入一点
报错信息来自解析器
括号不配对、逗号多余、用了单引号或注释——这些都会让解析失败,右侧标题显示「JSON 解析失败」,下面那行是浏览器给出的原文,通常带位置或片段。看不懂报错时,先按它指的位置回输入框找那个字符。
JSON 比脚本里的对象字面量严格:不允许注释、不允许尾随逗号、键名和字符串值必须双引号、也不认未定义这类值。很多「明明是好脚本却报 JSON 错」都栽在这几条上。
数字会被重新规范化
格式化会先把文本解析成数值再写回,于是末尾多余零的小数会变短、带前导零的整数不被接受、过大的整数可能改用科学计数或丢掉超出精度范围的尾数。它排版的是「值」,不是原样保留你敲下的每一位数字写法。
真要保住大整数或高精度小数的原始字面,别用它格式化——这类数据一旦当成数值走一遍就可能变样,宁可当字符串存着。
换句话说,把一段文本格式化再压缩回去,排版能还原,数字的书写形式却不一定回到最初敲下的每一个字符。
中文不会被转成转义
格式化不会把中文等非英文字符转义成反斜杠形式,输出里仍是看得懂的汉字;要不要那种转义是另一回事,不在这页能力内。它在编码层面按文本处理,也不负责在不同字节编码之间转换。
「键名排序」用浏览器的区域化比较,中文键会按当地习惯排,和按码点硬排的次序可能不同;排序只对对象键生效,数组一律保持原序。
想要那种把每个非英文字符都写成反斜杠转义的效果,得另找工具,这页只负责把结构排整齐,不改动字符本身的表示方式。
注意事项
- 解析与格式化都在浏览器本地完成,粘贴的内容不上传服务器。
- 处理只在点「格式化」或「压缩」时发生,边输入不会实时刷新结果。
- 只读结果框不能直接编辑;要改内容就点「结果转为输入」搬回左框再动手。
- 排序是可选的额外改写,不勾就完全保持对象里键的原始书写顺序。
- 输入里若混了注释或单引号,会被判为非法 JSON 而报错,不会被宽容处理。
- 整段处理是一次性的:改了左框内容要再点一次按钮,右框才会更新,它不会自己跟着变。