JSON 工具

JSON 校验找出问题,保留原文证据

默认手动校验,支持 Ctrl/Cmd+Enter;也可开启自动检查。点击诊断行列回到原文位置。

JSON 校验

JSON 输入

输入仅在当前浏览器标签页处理,不上传、不持久保存。

诊断列表

等待校验。

JSONC 支持 // 和 /* */ 注释;尾逗号仍不合法。

报告未运行或已过期,请校验当前输入。

导出包含诊断和少量原文片段,不是修正后的 JSON。

接口明明能解析,字段值却与预期不同,问题可能藏在同名字段里。JSON 校验不会先把文本变成普通对象,因此不会悄悄用后一个值覆盖前一个值。语法是否成立、数据是否存在风险,会分别展示。

排查配置文件时,单看“成功”或“失败”往往不够。这里的 JSON 在线校验保留输入顺序和空白,通过 JSON 语法检查定位错误,并给出 JSON 重复键与数字风险的具体位置,方便你回到数据来源核对。

为什么使用 JSON 校验查看原文

重复的字段,都有据可查

同一对象出现两个相同键时,后一个位置会产生警告,同时注明第一次出现的行列。键按解码后的字符串比较,例如 "a" 与 "\u0061" 也会被识别为重复。不同对象中各有一个同名键不受影响,工具也不会替你选择保留哪个值。

原文中的两个相同键标记连到诊断卡片,两个字段仍完整保留。

合法数字也可能存在使用风险

长订单号可能符合语法,却超过 JavaScript 安全整数范围。校验会指出原始数字的位置,保留全部数位,不自动加引号、不做四舍五入。处理接口数据时,应结合接收方的数字类型决定修正方式。

完整的长数字块旁显示黄色风险标记,原文数字没有被替换。

读懂报告的三个细节

01

先明确允许哪种语法

初始使用严格模式。JSONC 只增加行注释和块注释,不放宽尾逗号。切换模式后旧报告立即过期,必须按新模式重跑,不能把前一次通过结果作为本次依据。

02

位置是线索,不一定是原因起点

行列从 1 开始,点击后可定位输入光标。缺少逗号等问题可能要到下一行才被发现,应连同前一项检查。上下文会在出错位置附近截取,超长行不会完整塞进卡片。

03

修改后重新导出

手动模式按 Ctrl/Cmd+Enter 执行;自动模式在最后一次修改后等待 400ms。输入或参数变化会禁用旧报告的复制与下载。列表每批展示 50 条,导出包含全部已收集诊断。

从语法错误追到数据风险

区分警告与语法失败

JSON 校验将结果分为语法合法、合法但有警告、语法错误,以及未完成检查。重复键属于互操作风险,不会被误报成语法规则禁止。发现警告后,仍会继续检查可解析的后续内容。

按原始数字检查安全范围

安全整数范围为 −9007199254740991 到 9007199254740991。以小数点或指数写出的数学整数也会检查;转换为 Number 时变成无穷大的数字另报溢出风险。这不等于验证任意小数都能精确表示。

可追溯的诊断字段

报告包含诊断代码、级别、JSON Pointer、偏移、行列与上下文。重复键还包含首次出现位置。偏移和列按 UTF-16 单元计数,CRLF 算一次换行;路径中的斜杠和波浪号会按 Pointer 规则转义。

“通过”能说明什么

单份文档,不验证业务字段
一次粘贴一个完整值,根值也可以是字符串、数字或 null。本页不读取 URL、不导入文件、不批量处理 JSONL,也不验证 JSON Schema、必填字段或接口的取值范围。
注释模式并非任意宽松模式
两种模式都拒绝单引号、无引号键、尾逗号、NaN 与 Infinity。开头的 BOM 和非标准空白不会被悄悄清理。JSONC 中未闭合的块注释仍然是错误。
首个语法错误之后需要再查
遇到语法错误会停止,不承诺一次找全所有错误。之前发现的警告仅代表已扫描部分;修正后应重新校验。资源上限中断时,语法有效性为未知,不会显示全部通过。
输入和报告都有上限
最多接受 500000 个 UTF-16 单元,根深度为 0,最大深度为 100,最多 50000 个值,单个数字最多 1000 个单元。诊断最多 1000 条,包含上限提示;路径和上下文累计最多 2000000 个单元。
不代替你修改内容
不会自动修复、格式化、排序、删除重复键或给数字加引号。复制和下载的是含少量原文片段的诊断报告,不是修好的 JSON。分享报告前应检查片段中是否有不准备公开的内容。

JSON 校验常见问题

校验失败最常见的原因是什么?

常见原因包括少逗号、括号未闭合、字符串使用单引号,或根值后还有额外内容。先看报告的位置,再检查上一项;修正输入后重新执行,不能只凭错误行看起来正常就忽略提示。

JSON 是否允许注释?

严格 JSON 不允许注释。切换到 JSONC 后可以使用 // 行注释与 /* */ 块注释,但不接受尾逗号和 JSON5 的其他写法。报告中会记录所选模式。

校验通过是否代表数据一定“对”?

不代表。JSON 校验通过只说明满足所选语法且已完成指定检查;字段含义、必填项、数据类型约束和业务范围由接口或 Schema 决定。即使语法合法,也应查看是否有警告。

JSON 键可以重复吗?

语法允许同一对象出现重复键,但不同解析器的处理可能不同,也可能丢失前面的值。这里报告后续重复位置和首次出现位置,保留原文,不选择“第一个优先”或“最后一个优先”。

为什么 {name:'json'} 无法通过检验?

对象键必须使用双引号,字符串值也必须使用双引号。这段内容是 JavaScript 风格的对象字面量,不符合严格 JSON;切换到本页的 JSONC 模式也不会放宽这两条规则。

发现处理结果不符合预期?

用 JSON 校验核对下一份数据

载入示例,分别查看重复键与大整数两类警告。JSON 校验保留原文位置,方便你确认问题来源后再决定如何修改。