如何快速验证 JSON 数据是否合法?手把手教你校验技巧

2025-04-16

「这段 JSON 能不能用?」在联调 API、合并配置文件或导入数据库前,都应该先做一次语法校验。本文介绍几种常用校验方式,并给出适合日常开发的推荐流程。

语法校验 vs 结构校验

语法校验只回答「是不是合法 JSON」:括号是否匹配、引号是否正确、类型是否允许。

结构校验(如 JSON Schema)进一步检查字段名、类型、必填项——适合 API 契约,但前提是语法已通过。

建议顺序:先语法,再 schema 或业务规则。

方法一:编程语言内置解析

JavaScript:JSON.parse(text) 成功则合法,失败会抛出带 position 的异常。

Python:json.loads(text)。Java:new JSONObject(text) 或 Jackson ObjectMapper。

适合脚本与单元测试;调试时 position 需自己换算成行号。

try {
  const data = JSON.parse(raw);
  console.log("合法 JSON", data);
} catch (e) {
  console.error("解析失败:", e.message);
}

方法二:命令行工具

jq:cat data.json | jq . 能格式化则通常合法;失败会输出 parse error。

python -m json.tool file.json 适合 CI 管道中批量检查配置文件。

方法三:在线 JSON 校验(推荐日常调试)

粘贴接口返回或日志片段,即时显示是否合法、错误位置与修改建议。

本站工具在浏览器本地运行,数据不上传服务器,适合含敏感字段的响应体。

格式化成功后可用缩进排版检查嵌套结构是否符合预期。

容易误判为「合法」的情况

从 JavaScript 控制台复制的对象字面量(单引号、无引号键)不是 JSON。

JSON Lines(每行一个 JSON)不能作为整体传给 JSON.parse,需按行拆分。

带 BOM 的 UTF-8 文件可能导致首个字符解析失败,保存时选 UTF-8 无 BOM。

接口联调推荐流程

1. 复制响应体到在线工具,确认语法合法。

2. 格式化后检查字段名大小写、数组是否为空、null 与缺失字段的区别。

3. 与文档或 JSON Schema 对照(若有)。

4. 将修复后的样例保存为团队 fixture,避免重复踩坑。