DevTools

JSON验证器

在 Ali Hub DevTools 中使用 JSON验证器,并获得清晰的验证、结果、隐私说明和已记录限制。

主要输入

仅当工具明确说明浏览器本地、带版本、限定范围、可清除且非敏感的数据时才使用存储。

安装此工具

将此工具添加到设备,以便快速访问。

JSON验证器

检查文本是否符合标准 JSON 语法,并了解输入被接受或拒绝的原因。

使用数据前先检查 JSON

少一个引号、逗号或括号,就可能让 API、配置文件或构建步骤停止。这个验证器会尝试把 source text 按 JSON 读取,帮助你先区分语法问题,再处理应用程序的后续校验。

这里的 validation 指尝试把输入文本解析成一个 JSON value。解析成功只说明结构被 JSON 语法接受,并不说明必填字段、业务规则或 JSON Schema 校验已经通过。

当 payload 在服务之间传递时,先做独立的语法检查可以缩小调试范围。先查看 quote、comma、escape 和 nesting,再执行项目自己的 schema 与业务检查。

本页面适合检查 request body、fixture、导出的设置或配置片段。请从测试副本中删除 token、密码和个人信息,并按组织的隐私策略处理输入内容。

语法和数据含义是两件事

标准 JSON 包含 object、array、string、number、true、false 和 null。属性名与字符串使用双引号,成员之间用逗号分隔,括号必须按正确顺序闭合。comment 和 trailing comma 不属于标准 JSON grammar。

验证器只回答一个问题:source 是否能被解析为一个 JSON value?它不会修复 source、执行代码、调用 API,也不会判断 value 是否符合应用需求。请把 schema 和 domain check 作为独立步骤。

Whitespace 通常可以用于排版,但 string 内部的字符属于数据本身。请按照 production consumer 使用的 parser 规则检查 escape sequence、newline、Unicode 和 encoding。

JSON document 有效,并不代表 transport 也有效。HTTP header、content type、authentication、compression、大小限制和编码属于其他层次。

验证 JSON 的步骤

  1. 在 source field 中粘贴一个完整的 JSON value。请先删除 comment、code fence 以及编程语言的外层包装。
  2. 运行 validator 并阅读 status 和 diagnostic。不要只看 marker 所在字符,也要检查它前后的 token,因为真正的错误经常出现在更早的位置。
  3. 如果输入被拒绝,请检查 quote、comma、bracket、escape 和 nesting。对于较大的 document,可以先拆出较小的部分定位问题,再重新验证修正后的版本。
  4. 语法通过后,再运行项目的 schema、类型、必填字段、范围、permission 和业务规则检查。不要把这些结果和 syntax result 混写。
  5. 将原始 payload 与 redacted test copy 分开保存。不要把 secret 放进公开示例、截图或 URL。
  6. 使用真实 consumer 相同的 parser 和 encoding 做最后验证。不同语言对 duplicate key 和数字精度的处理可能不同。

验证方法

  • 读取 grammar

    Validator 尝试使用 token、quote、delimiter 和 nesting 规则,把整个 source 解析为一个 JSON value。

  • 报告结果

    Valid 表示 parsing 完成。Failure 表示 source 不符合工具能够理解的 syntax。

  • 分开后续检查

    Schema、range、permission 和 domain 是语义检查,需要另外的规则和 evidence。

如果工具没有记录 exact line number 或 error message,就不要自行编造。需要时请在真实 runtime 中重新测试。

阅读结果

Valid 表示 text 被接受为 JSON syntax。下一步查看 values,并运行 schema 或 application validation。

Invalid 表示 parsing 停止。请查看指定位置前后的字符,而不是只修改 marker 所在字符。

如果 syntax 有效但 request 失败,请检查 content type、endpoint、authentication、schema 和业务规则。Syntax success 不等于 network success。

如果 message 很笼统,请缩小 input 来寻找 failing section。增加或删除一个 property 后结果改变,只是调查线索,不是所有 parser 的通用政策。

常见错误

把带 single quote、comment 或 trailing comma 的 JavaScript 直接粘贴进来,是最常见的错误之一。请转换为标准 JSON。

把 valid result 当成 schema validation 是错误的。必填字段、范围和权限需要独立检查。

只修改 error marker 附近的字符可能无效,因为缺少的 quote 或 comma 可能在更早的位置。

不要把 JSON 当成 Python dictionary、YAML 或 JavaScript object。请遵循 JSON grammar。

Clipboard 可能带入 smart quote 或隐藏的 control character。工具结果不一致时,请在 plain text editor 中查看 source。

限制

文档化的 input 是一个 JSON text field。这不能证明工具支持 JSON Schema、business rule、文件处理或每一种 parser edge case。

Duplicate key、超大数字、document 大小和 encoding 需要时应单独测试,不同 library 的政策可能不同。

Checker 不会让恶意 payload 自动变安全。服务器仍然需要大小和 nesting 限制、resource limit 以及 security review。

请单独记录 production runtime、library version 和 error policy;页面的通用结果不能替代这些证据。

Examples

接受简单 object

这个基本 object 是有效 JSON 吗?

发送完整 object。

带双引号的 name、string 和 boolean 组成了有效的 object structure。

拒绝没有引号的名称

为什么 unquoted property name 无效?

发送 source 并查看 failure。

标准 JSON 要求 member name 是带双引号的 string。

接受嵌套数据

object 中可以放 object 的 array 吗?

把 nested value 作为一个 document 发送。

Array、object、number、comma 和 bracket 形成了合法的 JSON 结构。

拒绝 trailing comma

最后一个 member 后面的 comma 会怎样?

发送带 trailing comma 的 object。

标准 JSON 不允许 trailing comma。删除它后再次验证。

使用 null

null 是有效的 JSON value 吗?

发送 object 并阅读 status。

null 是标准 JSON value。它在应用中的含义由项目 contract 另行决定。

拒绝缺少 bracket

为什么每个 opening bracket 都要关闭?

发送不平衡的结构。

Array 用 [ 打开,却没有用 ] 关闭。使用数据前先修正 nesting。

Frequently asked questions

Valid JSON 是否代表应用数据有效?

不代表。它只说明 text 可以被 parse。必填字段、类型、范围、状态和业务规则必须另外验证。

Validator 会自动修复 source 吗?

请把它当 checker 使用。手动修正 source,保存 diff,然后重新发送经过检查的 copy。

Comment 允许吗?

标准 JSON 不允许 comment。需要注释时保留其他 source format,并在 build step 生成 strict JSON 后验证生成物。

为什么 single quote 会被拒绝?

标准 JSON 的名称和字符串使用 double quote。将 JavaScript object 转为 JSON 时优先使用 serializer,而不是手动替换字符。

这个工具检查 JSON Schema 吗?

不检查。请使用正确的 schema validator 和 draft version,并把结果与 syntax result 分开记录。

顶层 value 可以是 array 吗?

JSON 可以把 array 作为 top-level value,但某个 endpoint 可能要求 object。因此还要单独验证 endpoint contract。

Duplicate key 总会被拒绝吗?

没有统一政策。Parser 可能保留第一个、最后一个,或直接报错。避免 duplicate name,并在真实 consumer 中测试。

验证通过后应该做什么?

运行 schema、permission、range 和 integration tests,检查 content type、encoding、大小、timeout 与 logging,再把 redacted payload 放到 staging 中测试。

References