ByteCompress

JSON验证器

检查您的JSON是否符合RFC 8259的语法要求。获取精确的错误信息,包括行和列号,以快速修复问题。

0 chars
FreeClient-sideNo signup

数组中最后一个元素后的尾随逗号是最常见的JSON错误 - 在压缩输出中肉眼无法看到。根据StackOverflow 2023年开发者调查分析,JSON解析错误占API调试时间的约15%。此验证器直接在您的浏览器中捕捉到这一点及其他所有RFC 8259违规行为。粘贴您的JSON以立即获得结果:有效或无效,并提供任何问题的确切行和列。没有数据被上传。无需帐户。

如何验证JSON

  1. 将您的JSON粘贴或输入到输入框中。
  2. 验证器实时检查语法,或单击验证以获取完整报告。
  3. 如果有效,绿色指示器将确认结构,并提供顶层类型的摘要。
  4. 如果无效,错误面板将显示确切的行、列以及问题的通俗描述。
  5. 修复指示的问题并重新验证,直到收到干净的结果。

检查内容

结构规则

JSON必须以对象({})或数组([])开头,尽管RFC 8259也允许原始值(字符串、数字、布尔值、null)作为顶层值。大括号和方括号必须平衡并正确嵌套。逗号必须分隔元素,但不能出现在最后一个元素之后 - 尾随逗号是最常见的JSON错误。每个对象键必须是双引号字符串。

值类型

JSON定义了六种值类型:字符串(双引号,带特定转义序列)、数字(整数和小数,无前导零)、布尔值(truefalse,仅小写)、null(小写)、对象和数组。特定于JavaScript的值,如undefinedNaNInfinity和函数表达式不是有效的JSON,将导致验证失败。

RFC 8259合规性

RFC 8259(发布于2017年12月,替代RFC 4627和RFC 7159)是当前的IETF JSON标准。它规定了UTF-8编码,禁止重复的对象键,并定义了字符串值的确切转义序列。此验证器强制执行严格的RFC 8259规则,以确保在所有解析器和语言中具有最大兼容性。

示例

无效输入(尾随逗号)

{
  "name": "Alice",
  "roles": ["admin", "editor",]
}

验证器错误

第3行,第33列:意外的标记']'
JSON数组中不允许有尾随逗号(RFC 8259 §5)。

常见语法错误

  • 尾随逗号 - {"a": 1,} - 在闭合大括号或方括号之前删除最后一个逗号
  • 单引号字符串 - {'key': 'value'} - 改为双引号
  • 未加引号的键 - {key: "value"} - 用双引号包裹键
  • JavaScript注释 - // comment/* comment */ - JSON没有注释语法;请删除它们
  • 布尔值/null大小写不正确 - TrueFalseNULL无效;使用truefalsenull

验证与格式化的区别

验证检查JSON是否语法正确 - 它会通过或失败,并提供具体的错误细节。格式化仅添加空格以提高可读性,并不验证正确性。尝试格式化无效的JSON也会失败,因为格式化器必须先解析JSON。先验证,然后格式化。

一旦JSON通过验证,JSON格式化器会为可读性进行缩进,而JSON压缩器会为生产使用进行压缩。对于嵌入URL的JSON,在验证之前请使用URL解码器进行解码。

常见问题

JSON验证和格式化有什么区别?

验证检查您的JSON是否符合RFC 8259的语法规范。格式化仅添加空格以提高可读性,并不验证正确性。您可以尝试格式化无效的JSON,但格式化器也会失败,因为它必须先解析JSON。在格式化之前进行验证。

为什么JavaScript接受我的JSON,但验证器却拒绝?

一些JavaScript环境接受放宽的JSON超集,如JSON5或HJSON,这些超集允许注释、单引号字符串和尾随逗号。此验证器根据严格的RFC 8259进行测试,以确保JSON在所有语言和运行时中都能正常工作。如果您的用例仅限于JavaScript,请考虑使用JSON5.parse()和json5库。

我可以使用此工具验证JSON Schema文档吗?

此工具仅验证JSON语法,而不验证JSON Schema语义。JSON Schema文档本身是有效的JSON,因此语法验证有效。要验证数据对象是否符合JSON Schema定义,您需要专用的JSON Schema验证器,如ajv。

在这里验证时我的数据是私密的吗?

完全可以。验证在您的浏览器中客户端运行,使用本地的JSON.parse函数。没有数据发送到任何服务器,也不会被记录或存储。您可以安全地验证包含API凭证、个人信息或内部商业数据的有效负载。

最常见的JSON验证错误是什么?

按频率排序:(1) 最后一个元素后的尾随逗号 - [1, 2, 3,]; (2) 单引号字符串而非双引号; (3) 字符串内部未转义的反斜杠或控制字符; (4) JavaScript注释; (5) 大写的True/False/Null而非true/false/null。