JSON Schema 入门:像校验 SQL 一样校验你的 JSON 数据结构
2024-04-13
语法合法的 JSON 仍可能是「字段错了」的 JSON。JSON Schema 用一份声明描述允许的结构,运行时或 CI 里对照校验——类似数据库约束,但针对 JSON 文档。
最小 Schema 示例
根类型通常是 object 或 array;用 properties 列字段,required 列必填。
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["id", "name"],
"properties": {
"id": { "type": "integer" },
"name": { "type": "string", "minLength": 1 }
}
}常见关键字
type、enum、const 约束取值;items 描述数组元素;additionalProperties: false 禁止多余字段。
oneOf / anyOf 表达联合类型;$ref 引用可复用子 Schema。
在代码里怎么用
JavaScript:ajv 编译 Schema 后 validate(data);失败时返回 errors 路径与原因。
Python:jsonschema 库;Go:gojsonschema。OpenAPI 3 的请求/响应体就是 JSON Schema 的子集。
与语法校验的关系
顺序:JSON.parse 通过 → 再 schema 校验。Syntax error 与 schema violation 分开报错,联调更省时间。
团队落地
把 Schema 放进仓库,CI 对 fixture 样例跑 validate;API 变更先改 Schema 再改实现。
可从样例 JSON 生成初版 Schema,再人工收紧规则。