✓ JSON 校验器
语法检查,错误行定位,格式化输出。快速验证JSON语法,精确定位问题所在。
什么是JSON验证工具?
JSON验证工具是一种检查JSON数据是否符合JSON语法规范的在线工具。JSON看似简单,但有着严格的语法规则——键名必须用双引号、不支持尾逗号、值不能是undefined或函数等。一个小小的语法错误(如少了引号或多了逗号)就可能导致整个JSON解析失败,使API调用报错或配置文件加载失败。JSON验证工具不仅检查基本语法,还支持JSON Schema验证——检查数据是否符合预定义的结构和类型约束。本工具帮助开发者在数据传输和配置加载之前发现并修复JSON语法错误,避免因格式问题导致的运行时异常。
如何使用JSON验证工具
- 粘贴JSON数据 — 将需要验证的JSON字符串粘贴到输入框中。
- 自动验证 — 工具会即时检查JSON语法,显示通过或失败状态。
- 查看错误详情 — 如有错误,工具会标注错误位置、行号和具体的错误原因。
常见使用场景
场景一:API响应验证
调试API时验证返回数据是否为合法JSON,快速定位格式问题导致的解析失败。
场景二:配置文件检查
在修改package.json、tsconfig.json等配置文件后,验证语法正确性再保存,避免项目启动失败。
场景三:Schema约束验证
检查JSON数据是否符合预定义的JSON Schema,确保数据结构、类型和必填字段满足API规范。
技术原理
JSON验证基于JSON规范(RFC 8259):
// JSON语法规则
// 1. 值类型:string, number, object, array, true, false, null
// 2. 字符串必须用双引号(不能用单引号)
// 3. 对象键名必须是字符串(必须用双引号)
// 4. 不允许尾逗号 [1,2,3,] ← 非法
// 5. 不支持注释 /* ... */ 或 // ...
// 6. 数字不允许前导零(01不合法,0.1合法)
// 7. 不支持undefined, NaN, Infinity
// JavaScript验证方法
function validateJSON(str) {
try {
JSON.parse(str);
return { valid: true };
} catch (e) {
return { valid: false, error: e.message };
// 典型错误:
// "Unexpected token ' in JSON at position 5"
// "Expected ',' or '}' after property value"
}
}
// JSON Schema验证示例
const schema = {
type: "object",
required: ["name", "age"],
properties: {
name: { type: "string" },
age: { type: "number", minimum: 0 }
}
};
// 验证数据是否符合此schema约束
最佳实践与注意事项
- 手写JSON时建议使用格式化工具先生成,再填入数据,可以减少语法错误。
- JSON文件应使用UTF-8编码,BOM头(字节顺序标记)会导致某些解析器报错。
- JavaScript对象字面量不是JSON——注意键名引号和尾逗号的区别。
- API开发中应返回规范的JSON,使用JSON.stringify()而非手动拼接字符串。
常见问题
Q:最常见的JSON错误有哪些?
A:1.使用单引号代替双引号;2.对象最后一个属性后面多了逗号;3.在JSON中写注释;4.键名忘记加引号;5.使用了undefined而非null。这些在JavaScript对象中合法,但在JSON中不合法。
Q:JSON和YAML有什么区别?
A:JSON语法更严格但机器友好,YAML更简洁人类友好。YAML支持注释、不需要引号和逗号。许多配置文件(如GitHub Actions、Docker Compose)使用YAML,但API通信几乎都用JSON。
Q:什么是JSON Schema?
A:JSON Schema是一种描述JSON数据结构的规范,定义字段名、类型、是否必填、取值范围等约束。类似TypeScript的类型定义,但用于运行时数据验证。常用于API文档和自动化测试。
Q:为什么JSON不支持注释?
A:JSON设计目标是作为数据交换格式而非配置文件。 Douglas Crockford认为注释会导致开发者在数据中嵌入指令,破坏数据与代码的分离。如需在配置中使用带注释的JSON,可用JSONC(VS Code使用的变体)。
Q:如何验证JSON是否符合特定结构?
A:使用JSON Schema定义期望的结构(字段类型、必填项、值范围等),然后用ajv等验证库检查JSON数据是否符合schema。本工具的Schema验证功能支持此用途。