JSON验证与美化

使用我们的JSON验证与美化工具验证JSON内容并使其看起来好看,便于阅读和调试。

2 个评分中的 5 个
JSON验证与美化

JSON验证与美化是一款免费工具,可检查 JSON 语法是否有效,并对有效内容进行格式化,让数据结构更易于阅读。

JSON 验证和美化有什么作用?

JSON 验证用于确认输入内容是否符合 JSON 语法,美化则通过统一空格和缩进,清晰呈现有效对象与数组的结构。调试 API 响应、部署前检查配置,或阅读第三方提供的紧凑数据时,这项功能非常实用。

JSON 的语法比 JavaScript 对象字面量更严格。属性名必须使用双引号,字符串不能使用单引号,对象和数组的最后一项后也不能有尾随逗号。注释、undefined、NaN 和 Infinity 同样不属于 JSON 规范。

此工具在服务器端使用 PHP 的 json_decode 函数。你的输入会通过 HTTPS 发送到服务器,但不会被存储。由于数据确实会离开你的设备,如果所在组织的数据处理规则不允许将密码、访问令牌或个人数据发送到外部服务器,请先移除或遮盖这些信息。

如何验证并美化 JSON?

将内容粘贴到 JSON 字段,然后运行工具。为获得有意义的结果,请输入一个完整的 JSON 值,不要只粘贴从日志行中截取的部分对象。

  1. 复制原始响应、配置块或其他 JSON 值,不要包含控制台附加的标签。
  2. 将内容粘贴到 JSON 字段,并保留原有的引号和转义字符。
  3. 运行验证,然后查看格式化结果或工具报告的错误。
  4. 如果验证失败,先修正最前面明显的语法问题,再次运行。缺少一个引号,就可能导致后面的多个字符被错误解析。
digily.link 上的 JSON验证与美化 工具及其输入表单

JSON 词法单元之间只允许使用 4 种空白字符,分别是空格 (U+0020)、制表符 (U+0009)、换行符 (U+000A) 和回车符 (U+000D)。这些字符不会影响数据,因此可以添加或删除。带引号字符串中的空白属于数据,必须保持不变。字符串中的标点符号也会保留,但引号、反斜杠和控制字符需要使用相应的转义序列。

如何理解验证结果?

验证成功表示 PHP 能将输入内容解码为 JSON;验证失败则说明解析器无法将其识别为一个完整、有效的 JSON 值。对于有效的对象和数组,美化处理会清晰展示其嵌套层级与边界。

常见的失败原因包括:

  • 在 } 或 ] 前使用了尾随逗号;
  • 属性名没有加引号,例如 {name: "Ada"};
  • 字符串使用了单引号;
  • 属性或数组元素之间缺少逗号;
  • 字符串中的双引号或反斜杠未转义;
  • 对象、数组或字符串不完整;
  • 输入不是有效的 UTF-8,或字符串中包含未经转义的控制字符;
  • 整数部分包含不必要的前导零,例如 01 或 -01,或者使用了 NaN 等非 JSON 值。

空字段不是有效的 JSON。相反,42、true、null 或 "hello" 这样的单独值虽然不是对象或数组,但仍是有效的 JSON。嵌套层级过深的内容也可能超出解码器的嵌套限制。

通过语法验证并不代表数据符合 API 约定。一个文档可以是有效的 JSON,但仍可能在应用需要数字的位置提供了字符串、遗漏必填属性,或使用了不被接受的日期格式。要检查这类要求,请使用 JSON Schema 或应用层验证。

JSON验证与美化 工具生成的结果示例

JSON 示例解析

有效的紧凑输入:

{"name":"Ada","active":true,"roles":["admin","editor"]}

美化后的结果会在不同的缩进层级中分别显示属性和数组元素。对应的值仍分别是字符串、布尔值和数组。格式化只改变显示方式,不会改变底层数据类型。

包含尾随逗号的无效输入:

{"name":"Ada","active":true,}

此输入无法通过验证,因为 JSON 不允许在最后一个属性后添加逗号。删除该逗号后,对象就是有效的 JSON。

只要输入采用有效的 UTF-8 编码,带重音符号和非拉丁文字就可以直接出现在 JSON 字符串中。例如,{"city":"Zürich","greeting":"こんにちは"} 是有效的。JSON 转义写法 \u00fc 也是表示某些 Unicode 字符的有效方式,但基本多文种平面以外的字符需要使用代理对。

哪些情况下没必要美化 JSON?

如果 JSON 只供机器读取,也不需要人工检查或进行版本控制审查,就没有必要美化。额外的缩进和换行会增加 JSON 的传输字节数,因此生产环境中的响应通常采用紧凑格式。

对已经很紧凑的 JSON 进行压缩也没有太大意义。反复压缩无法缩短固定的属性名或字符串值,而修改这些值会改变数据。如果处理的是用于部署的 JavaScript,而不是 JSON 数据,更合适的工具是 JS压缩工具。

在调试、代码审查和部署前检查期间查看 JSON 结构或值时,美化最有用。它能暴露不匹配的嵌套关系,让大型数组更易浏览,并在将配置提交到 Git 时生成更清晰的差异对比。不过,它不会自动修复语法错误的 JSON,也无法判断有歧义的片段原本想表达什么。

常见问题

JSON 里可以写注释吗?

不可以。标准 JSON 没有注释语法,因此 // comment 和 /* comment */ 都会导致验证失败。如果配置文件需要注释,请使用明确定义了注释语法的格式,或在将内容交给严格的 JSON 解析器之前删除注释。

重复的属性名会被判定为错误吗?

不一定。JSON 规范指出,对象中的成员名称应当唯一,但解析器并不一定会将重复名称视为语法错误。PHP 解码时通常会保留后出现的值。如果必须保留每一次出现的内容,请在验证前检测重复属性名。

可以验证 JSON Lines 文件吗?

不能将其作为一个 JSON 文档直接验证。JSON Lines 也称为 NDJSON,每一行都包含一个独立的 JSON 值,而普通 JSON 解析器只接受一个顶层值。请分别验证每一行,或将这些记录转换为一个 JSON 数组。

JSON 对象中的属性顺序重要吗?

应用不应依赖 JSON 对象的属性顺序。数组有固定顺序,但对象表示由具名成员组成的集合,其他解析器或序列化程序可能以不同顺序输出这些成员。如果顺序本身具有含义,请将值放入数组。

为什么 JSON 文件看起来没问题,却还是验证失败?

不可见的字节顺序标记、格式错误的 UTF-8,或未经转义的控制字符,都可能让看似正确的文本验证失败。从终端复制内容时,还可能带入状态标签或时间戳等前缀。请检查原始字节,或使用能够显示编码和控制字符的编辑器打开文件。

最后检查

部署修正后的 JSON 之前,除了核对可见值,还要比较数据类型,确认转义序列没有变化,并运行使用该数据的应用或其 Schema 验证。排查第三方数据问题时,请保留一份未经修改的原始响应,以免格式化操作掩盖故障来源。

热门工具