JSON 格式化

校验、格式化或压缩 JSON,可选缩进宽度与按键名排序,坏语法当场报位置。

JSON 格式化

JSON 把数据写成少数几种形状:对象用花括号包住一组「键冒号值」,数组用方括号包住一串元素,再往下是字符串、数字、真假值和空值。机器不在乎排版乱不乱,人却需要缩进和换行才看得清。这页把压成一行的 JSON 重新排好,也能反向把带缩进的收成紧凑一行,方便读、也方便塞进配置或请求体。

校验是它的另一半价值:只要括号没配齐、逗号多写一个、字符串用了单引号,就会当场报错,并把浏览器解析器看到的原始信息摊给你——这类毛病埋在一大段文本里靠眼睛很难定位,格式化这一步正好把出错位置暴露出来。处理只在点按钮时发生,边打字不会自动跑。

它不改变数据本身,只改排版:格式化前后表示的是同一份内容,数组元素的先后不会被调换。唯一的可选改写是「键名排序」,勾上后会把每个对象里的键按名字重排,方便两份配置逐行对比时忽略书写顺序的差异。

怎么用

  1. 粘贴把要处理的 JSON 放进左侧输入框(占位「粘贴 JSON ...」)。框里预置了一小段示例,直接替换成你自己的内容即可,输入不上传、只在本地解析。
  2. 选缩进上方两个按钮选缩进宽度,只有「2 空格」和「4 空格」两档,没有制表符或一空格选项;它只影响格式化时的层级缩进,压缩时不涉及缩进。
  3. 可选排序要按名字重排对象里的键,就勾「键名排序」。它会递归处理每一层对象,但不改动数组元素的先后,也不改键的大小写,只是把同一层的键排个序。
  4. 格式化点「格式化」按当前缩进和是否排序重新排版,结果显示在右侧只读框。什么都没填就点,会弹「请输入 JSON」的提示,而不是静默产出空白。
  5. 压缩点「压缩」去掉所有用于展示的空白与换行,得到一行紧凑文本,适合放进链接、请求体或任何对体积敏感的地方。
  6. 复制或接力点「复制结果」把右侧内容拷走;点「结果转为输入」把结果搬回左框接着再处理,比如先格式化再排序、来回迭代几轮。

示例

输入
默认那段 {"name":"xmi4","tags":["tool","json"],"nested":{"ok":true}},缩进选「2 空格」、不排序,点「格式化」
输出
{
  "name": "xmi4",
  "tags": [
    "tool",
    "json"
  ],
  "nested": {
    "ok": true
  }
}

数组仍按 tool、json 的原顺序,嵌套对象各多缩进一层;点「压缩」则收回成一行紧凑写法。

深入一点

报错信息来自解析器

括号不配对、逗号多余、用了单引号或注释——这些都会让解析失败,右侧标题显示「JSON 解析失败」,下面那行是浏览器给出的原文,通常带位置或片段。看不懂报错时,先按它指的位置回输入框找那个字符。

JSON 比脚本里的对象字面量严格:不允许注释、不允许尾随逗号、键名和字符串值必须双引号、也不认未定义这类值。很多「明明是好脚本却报 JSON 错」都栽在这几条上。

数字会被重新规范化

格式化会先把文本解析成数值再写回,于是末尾多余零的小数会变短、带前导零的整数不被接受、过大的整数可能改用科学计数或丢掉超出精度范围的尾数。它排版的是「值」,不是原样保留你敲下的每一位数字写法。

真要保住大整数或高精度小数的原始字面,别用它格式化——这类数据一旦当成数值走一遍就可能变样,宁可当字符串存着。

换句话说,把一段文本格式化再压缩回去,排版能还原,数字的书写形式却不一定回到最初敲下的每一个字符。

中文不会被转成转义

格式化不会把中文等非英文字符转义成反斜杠形式,输出里仍是看得懂的汉字;要不要那种转义是另一回事,不在这页能力内。它在编码层面按文本处理,也不负责在不同字节编码之间转换。

「键名排序」用浏览器的区域化比较,中文键会按当地习惯排,和按码点硬排的次序可能不同;排序只对对象键生效,数组一律保持原序。

想要那种把每个非英文字符都写成反斜杠转义的效果,得另找工具,这页只负责把结构排整齐,不改动字符本身的表示方式。

注意事项

  • 解析与格式化都在浏览器本地完成,粘贴的内容不上传服务器。
  • 处理只在点「格式化」或「压缩」时发生,边输入不会实时刷新结果。
  • 只读结果框不能直接编辑;要改内容就点「结果转为输入」搬回左框再动手。
  • 排序是可选的额外改写,不勾就完全保持对象里键的原始书写顺序。
  • 输入里若混了注释或单引号,会被判为非法 JSON 而报错,不会被宽容处理。
  • 整段处理是一次性的:改了左框内容要再点一次按钮,右框才会更新,它不会自己跟着变。

常见问题

JSON 和脚本里的对象有什么区别

JSON 只是文本、是一种数据交换格式,规则比字面量严:要双引号、不许注释、不许方法和未定义。脚本对象是内存里的结构,能带方法和各种类型。

为什么我的 JSON 一直报解析失败

常见是尾随逗号、单引号、写了注释,或全角引号混进了键名。顺着报错指的字符看,多半落在这几类里。

格式化会改变数据内容吗

不改变表达的数值含义,但数字写法可能被规范化、空白被重排;数组顺序不动,键顺序只有勾选排序才会变。

压缩和格式化能来回做吗

能。压缩去掉展示空白,格式化再加回来,两者都只依赖能否成功解析,对同一份数据结果是等价的。

支持一次处理多个文档吗

不支持,一次只解析一个完整 JSON 值;多份要分多次粘贴,中间不能并排放两个用空格分隔的对象。

为什么大整数格式化后末位变了

超过双精度能精确表示的整数,解析成数值再写回时尾数会失真。这种超大数建议用字符串承载,别当数字处理。

键排序会不会把数组也排了

不会,只重排对象里的键;数组是有序集合,元素先后一律保持不变。

能把它当校验器用吗

可以:能成功出结果就说明至少能被解析;但解析通过不等于结构符合你的业务约定,字段对不对仍需自己核对。

缩进为什么只有二和四

这页只给了两档常用宽度,够用又不堆选项。要严格对齐某种特殊风格,可以格式化后再自行调整空格。

能保留我原来的键顺序吗

能,不勾「键名排序」就原样保留对象里键的书写先后;只有勾了才按名字重排,数组则永远不动。

注册后可收藏工具、跨设备同步最近使用。