JSON 工具箱

Schema 与校验

用 JSON Schema 描述数据形状,把「口头约定」变成可执行校验,并进一步驱动 TypeScript 类型与表单生成。

7 篇文章

本分类文章

JSON Schema 从入门到工程化

关键字很多,真正天天用的只有十几个。把 type/properties/required/$ref 用对,再处理好错误信息,就能覆盖八成场景。

进阶约 14 分钟更新于 2026-10-30

Schema 与 TypeScript 类型双向同步

类型和 schema 各管一段:一个在编译期,一个在运行时。问题不是选哪个,而是如何让两者自动保持一致。

进阶约 11 分钟更新于 2026-10-30

自动生成的 JSON Schema 为什么总在拒绝真实数据

把示例 JSON 丢进生成器,得到的 schema 往往一上线就拦掉正常数据。本文用五条同形状记录做对照实测,说明「样本越全反而越糟」的原因,并给出多条采样、语义补全、错误定位的完整落地流程。

进阶约 14 分钟更新于 2026-10-30

JSON Schema 复用:$ref、$defs 与 allOf/oneOf 组合

$ref 解决复用,allOf/oneOf 解决组合,两者叠在一起最容易出事。本文按解析顺序讲清 $id、$defs、条件分支、循环引用与打包,并给出可复现的调试路径。

进阶约 11 分钟更新于 2026-10-31

JSON Schema 报错看不懂:Ajv 错误定位与错误信息治理

校验器给出的是一串机器错误,用户需要的是「哪个输入框错了」。本文拆解 Ajv 的 errors 数组,讲清 instancePath 与 schemaPath 的差别,并给出归类、自定义文案、国际化与前端呈现的完整方案。

实战约 10 分钟更新于 2026-10-31

additionalProperties 不关,Schema 校验等于没校验

校验通过不代表数据干净。Pydantic 默认忽略未知字段,Zod 默认剥离,Ajv 默认放行——模型编造的参数、拼错的键都会静默穿过。本文用实测说明静默放行的三种形态,并给出关闭对象、控制强转、逐层收口的完整写法。

进阶约 8 分钟更新于 2026-11-02

JSON Schema 契约测试:把校验规则焊进 CI

schema 写完不改就是坏的起点:一个 typo 让校验器静默放行,一次重构让 fixture 全线误报。本文给出一套可落地的契约测试方案——正例、负例、快照三件套,schema 本身先进 lint,编译一次复用,再把四道闸门焊进 CI,让契约坏了构建先红。

实战约 8 分钟更新于 2026-11-05