JSON 格式化校验工具

JSON 在线格式化与校验工具

粘贴 JSON 即可格式化(美化缩进)、压缩成一行或按键名排序。如果 JSON 不合法,会显示第一个错误所在的行和列、在原文中标出位置,并告诉你怎么改。JSON 不会离开你的浏览器。

输出
缩进
  • 格式化后的 JSON

    { "order": { "id": 12345678901234567890, "status": "已发货", "items": [ { "sku": "TEA-LJ250", "name": "西湖龙井 250g", "qty": 2, "price": 168.00 }, { "sku": "CUP-7", "name": "景德镇茶杯", "qty": 1, "price": 59.90 } ], "customer": { "name": "张伟", "phone": "13800138000", "address": "上海市浦东新区世纪大道100号", "newsletter": false }, "note": null } }

校验结果有效的 JSON
键的数量18
嵌套层数4
处理前大小(字节)335
处理后大小(字节)523
大小变化56.12%
行数27
对象数5
数组数1

数字和字符串按原样复制:不会四舍五入,也不会重新转义。

全部在你的设备上计算 · 公式已用已知数值验证 · 了解我们如何验证

JSON 格式化工具怎么用

  1. 把 JSON——接口返回的数据、配置文件、一条日志——粘贴到输入框。粘贴后立刻校验并格式化。
  2. 选格式化得到用 2 个空格、4 个空格或制表符缩进的易读格式;选压缩(一行)则去掉值与值之间所有的空格和换行。
  3. 勾选排序键名,每个对象的属性都会按字母顺序排列,方便对比同一份数据的两个版本。数组的顺序不变。
  4. 点击结果旁的复制。如果 JSON 不合法,会显示问题、行号和列号,并在出错的那一行下面用 ^ 标出位置。

格式化、压缩、校验分别做什么

格式化(也叫美化、pretty print)把每个属性和数组元素放到单独一行,并按嵌套层级缩进;压缩正好相反,输出最紧凑的形式。两者都不改变数据本身。校验则按 JSON 标准 RFC 8259(与 ECMA-404 的语法相同)检查文本:键名和字符串用双引号、不能有尾随逗号、不能有注释、true、false、null 必须小写、数字不能有前导零,也不能是 NaN 或 Infinity。工具会报告找到的第一个错误。

很多在线格式化网站先用 JavaScript 的 JSON.parse 解析再重新输出。本工具自己逐字读取文本,所有值都按原样保留:

中文输入法造成的全角符号错误

开着中文输入法打符号时,JSON 需要的半角符号会变成全角,看起来几乎一样,却会导致解析失败。本工具对这些情况的提示和改法如下:

输入的字符显示的错误改法
全角冒号“:” {"name":1}缺少冒号改成半角 :
全角逗号“,”、顿号“、” [1,2]缺少逗号改成半角 ,
中文引号 “ ” {“name”: 1}中文引号或弯引号改成半角 "
全角双引号“"”或直角引号「」意外的字符改成半角 "
全角空格不可见字符删掉或改成半角空格

字符串的内容(比如 "张伟"、"上海市浦东新区")可以照常使用中文和全角字符;必须是半角的只有 JSON 的结构符号 { } [ ] : , " 以及字符串外面的空白。按 Shift 切换到英文状态再打这些符号,就能避免大多数问题。

其他常见错误及修改方法

错误错误写法正确写法
末尾多了逗号{"a": 1, "b": 2,}{"a": 1, "b": 2}
单引号{'name': '张伟'}{"name": "张伟"}
键名没有引号{name: "张伟"}{"name": "张伟"}
注释{"port": 80 // web}{"port": 80}
Python 或 JavaScript 的值{"x": None, "y": True, "z": undefined}{"x": null, "y": true, "z": null}
前导零(如编号){"code": 010020}{"code": "010020"}
单个反斜杠{"path": "C:\Users"}{"path": "C:\\Users"}
几个值连在一起{"a": 1} {"b": 2}[{"a": 1}, {"b": 2}]

缺少右括号时,解析器要读到最后才会发现,所以“JSON 意外结束”指向最后一行,而真正漏掉的 } 或 ] 在更前面。先格式化前面合法的部分,看缩进从哪里开始不对,是最快的定位办法。

计算示例:缩进会让 JSON 变大多少

输入框里的示例是一条网店订单的单行接口返回,共 335 字节,有 18 个键,嵌套 4 层。UTF-8 编码下每个汉字占 3 字节,英文字母和数字占 1 字节。格式化后变成 27 行,大小如下:

输出大小
压缩(一行)335 字节
制表符451 字节
2 个空格523 字节
4 个空格667 字节

制表符每层只占 1 字节,所以是格式化结果里最小的。需要人阅读和编辑的文件,可读性通常值得多出的那些字节;大批量传输或存储的 JSON 则适合压缩。

限制与小技巧

JSON 不会离开你的设备

格式化和校验都在浏览器里完成。JSON 里常常有 API 密钥、令牌或客户信息,这些内容都不会被上传或记录,也不会被保存:刷新页面就会清空。

常见问题

我的 JSON 会被上传到服务器吗?

不会。页面在你的浏览器里用 JavaScript 完成格式化和校验,所以可以放心处理内部数据;页面加载后断网也能用。

为什么在 JavaScript 里能用,JSON 校验却报错?

JavaScript 的对象字面量允许很多 JSON 不允许的写法:键名不加引号、单引号、尾随逗号、注释、undefined 和函数。JSON 是更严格的数据格式,这样每种编程语言都能用同样的方式读取它。

“JSON 意外结束”是什么意思?

文本结束时还有东西没有闭合——通常是漏了 } 或 ],或者某个字符串缺少结尾的引号。复制时内容被截断也会出现这个错误。

看起来没问题,为什么还报错?

很可能混进了全角符号。开着中文输入法打出的冒号“:”、逗号“,”、引号“ ”和全角空格,肉眼很难和半角区分。按提示的列号找到 ^ 标记处的字符,切换到英文状态重新输入即可。

排序键名会改变数据吗?

不会。RFC 8259 把对象定义为“无序的名称/值对集合”,键的顺序没有意义。数组是有序的,所以数组里的元素永远不会被排序。

怎样把 JSON 压缩成一行?

在输出里选压缩(一行),就会去掉所有换行和缩进。字符串内部的空格和 \n 属于数据本身,会原样保留。

把这个计算器嵌入你的网站

可免费用于你的网站或博客。把下面的代码粘贴到想显示计算器的位置即可。

最后更新:2026年10月16日

菜单

分类

理财与贷款计算器15款计算器商业与购物计算器5款计算器健康与减重计算器6款计算器数学与学习计算器7款计算器日期与时间计算器5款计算器节日与重要日子倒计时8款计算器生活实用工具7款计算器程序员在线开发工具9款计算器

CalcWorthy

关于我们联系我们隐私政策使用条款

语言

语言
简体中文Simplified ChineseEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語Japanese한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese