接口联调排错
后端返回的 JSON 串里混了转义字符和多余逗号,用浏览器控制台看一坨乱。复制进本工具,点「校验」红线标出第 37 行末尾多了个逗号;切「树视图」展开,发现某字段值是字符串 'null' 而非真正的 null。不用逐行数括号,5 秒定位到问题。
开发者工具 · JSON / 数据格式
缩进/压缩/树视图/校验/高亮
输出将在这里呈现 —— 点「示例」试试从 API 返回里复制一段 JSON 来调试,粘进编辑器后发现缩进全乱、少了个逗号,整段变红。这个工具在粘贴后立即做语法校验并标出错误行号,同时把嵌套层级展开成可折叠的树。格式化、压缩、高亮三档切换都在浏览器本地完成,数据不经过任何服务器——适合在未连外网的开发机上检查接口返回,或给后端同事发一段结构清晰的报文。
后端返回的 JSON 串里混了转义字符和多余逗号,用浏览器控制台看一坨乱。复制进本工具,点「校验」红线标出第 37 行末尾多了个逗号;切「树视图」展开,发现某字段值是字符串 'null' 而非真正的 null。不用逐行数括号,5 秒定位到问题。
运维凌晨从 200MB 的 Nginx 访问日志里 grep 出一段 JSON 配置,粘贴到终端被缩进打乱,眼花了也看不出哪层嵌套。丢进工具点「格式化」,多层嵌套瞬间展开成缩进结构,直接复制到生产环境,避免手改缩进导致配置失效。
写接口文档时,手写的 JSON Schema 示例里少了个 'required' 数组。把示例粘贴到工具,点「校验」提示 'type' 字段缺失,展开树视图发现 'properties' 下有个字段名拼错了('descrption' 少了个 i)。不用等同事 review 完才发现,自己当场改掉。
前端拿到后端返回的 JSON,发现 'userName' 字段一直 undefined。把返回体复制进工具,切「树视图」展开所有键,发现后端返回的是 'user_name'(下划线命名)。前端改代码前,先用工具的「压缩」功能把 JSON 压成一行,发给后端确认字段名,省去反复联调。
用脚本生成了 100 条随机 JSON 数据准备压测,但担心生成器有 bug——比如某条里 'id' 字段重复了。把整段 JSON 粘贴进工具,点「校验」通过;再切「树视图」检查结构,发现所有 'uuid' 字段长度一致,确认生成逻辑没问题。
| 输入 | 输出 | 说明 |
|---|---|---|
| {"name":"张三","age":30,"city":"北京"} | { "name": "张三", "age": 30, "city": "北京" } | 常规:单层简单对象,验证基础缩进与键值对齐 |
| [1,2,3,4,5] | [ 1, 2, 3, 4, 5 ] | 常规:纯数组,验证列表展开与逗号换行 |
| {} | {} | 边界:空对象,验证不产生多余换行或缩进 |
| [] | [] | 边界:空数组,验证输出保持紧凑 |
| {"a":{"b":{"c":1}}} | { "a": { "b": { "c": 1 } } } | 边界:深层嵌套(3层),验证递归缩进正确性 |
| {"name":"张三","age":30,"city":"北京",} | { "name": "张三", "age": 30, "city": "北京" } | 易错:末尾多余逗号,工具自动去除并格式化(非严格校验模式) |
| {"key":"value with \"quotes\""} | { "key": "value with \"quotes\"" } | 易错:字符串内包含转义引号,验证转义字符保留不破坏格式 |
1.JSON 末尾多了一个逗号
{ "name": "张三", "age": 30, }{ "name": "张三", "age": 30 }JSON 规范 (RFC 8259) 明确禁止对象或数组最后一个元素后出现逗号,这与 JavaScript 对象字面量不同。
2.键名没有用双引号包裹
{ name: "张三", age: 30 }{ "name": "张三", "age": 30 }JSON 要求所有键名必须用双引号括起来,单引号或无引号均非法,这是与 YAML 或 JavaScript 对象字面量的关键区别。
3.字符串值用了单引号
{ "name": '张三' }{ "name": "张三" }JSON 字符串值必须使用双引号,单引号仅在 JavaScript 中允许,在 JSON 解析器中直接报错。
4.数值前补零,被解析为八进制或报错
{ "version": 0123 }{ "version": 123 }JSON 数值不允许前导零(除非小数部分 0.xxx),部分解析器会将其视为八进制或直接抛出语法错误。
5.布尔值或 null 写成字符串
{ "active": "true", "data": "null" }{ "active": true, "data": null }true、false、null 是 JSON 字面量,不加引号;加引号后变成字符串,语义完全不同,下游逻辑可能误判。
6.注释混入 JSON 文本
{ "name": "张三" /* 注释 */ }删除注释,或使用 JSONC(带注释的 JSON 变体)标准 JSON 不支持任何注释(// 或 /* */),这是与 JSON5 或 JSONC 的区别。工具默认按标准 JSON 校验,注释会导致解析失败。
7.浮点数小数点前后缺位
{ "pi": 3. } 或 { "pi": .14 }{ "pi": 3.14 }JSON 数值中,小数点前后必须都有数字,否则不符合 JSON 数值词法规则,大多数解析器会拒绝。
8.字符串内未转义控制字符
{ "message": "第一行
第二行" }{ "message": "第一行\n第二行" }JSON 字符串中,换行符、制表符等控制字符必须转义为 \n、\t 等形式,直接嵌入字面换行会导致解析错误。
depth = max({ level_of_nesting_for_each_element })
depthJSON 最大嵌套深度,根为 0level_of_nesting_for_each_element每个元素从根开始的层级数输入 JSON 为 {"a":{"b":[1,{"c":2}]}},遍历各元素:根 depth=0,a 的 depth=1,b 的 depth=2,数组元素 1 的 depth=3,c 的 depth=3。取最大值 depth=3。该值用于树视图缩进层级数(缩进 3 级)及校验时判断是否超过浏览器默认限制(通常 100 层)。
本工具纯前端处理,超大 JSON(比如超过 10MB)确实会让浏览器变慢甚至无响应。如果遇到卡顿,先试试压缩模式只校验结构,不展开树视图;还不行就分段粘贴,每次处理 1-2MB。工具本身不设文件大小上限,但受浏览器内存限制,建议 50MB 以上的 JSON 用命令行工具处理。
当前版本缩进固定为 4 个空格,不支持自定义缩进大小。如果需要 2 空格输出,可以把格式化结果复制到代码编辑器里用替换功能(把 4 空格替换成 2 空格)。后续版本会考虑加入缩进选项,但短期内只能手动调。
校验通过只说明 JSON 语法正确(括号成对、引号完整、逗号位置对),不保证语义符合你的程序预期。常见情况:字段名大小写不同、值类型不符(比如程序要数字但你给了字符串)、缺少必要字段。建议把校验结果和程序报错信息对比,重点看字段名和值类型。
树视图目前不支持右键复制路径功能。要获取某节点的完整路径(如 data.users[0].name),可以手动从根节点逐层记下来,或者把鼠标悬停在节点上,工具会高亮对应的原始文本位置。如果频繁需要路径提取,建议先用压缩模式把 JSON 转成一行,再配合文本搜索定位。
标准 JSON 规范(RFC 7159)不允许注释,本工具严格按规范解析,所有注释会被当作无效字符丢弃。如果你处理的是带注释的配置文件(比如 VS Code 的 settings.json 或 package.json),那些其实是 JSONC 格式(JSON with Comments),本工具暂不支持。建议先用支持 JSONC 的编辑器处理,再粘贴纯 JSON 部分。
可以。压缩只是去掉空格和换行,不改变数据本身,再次点击「格式化」就能恢复缩进和换行。注意:压缩不可逆的是注释(如果有的话),以及原始 JSON 中多余的空格(比如值两侧的空格),但数据结构和字段值完全不变。
本工具完全在浏览器本地运行,所有处理都在你的电脑上完成,不会将任何数据发送到服务器。你可以断网测试:关闭网络后页面依然能正常格式化、校验和压缩。公司敏感数据可以放心使用,但注意不要复制到地址栏或分享给他人,避免通过浏览器历史记录泄露。
不能。\uXXXX 是 Unicode 转义序列,JSON 规范允许用这种形式表示非 ASCII 字符。本工具格式化时保持原样,不会自动解码。如果需要看到中文,可以在粘贴前用文本编辑器把 \uXXXX 替换为实际字符(很多编辑器支持这个功能),或者确认生成 JSON 的程序是否设置了 ensure_ascii=False(Python)等选项。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。