用途:把 JSON Schema 从一个草案版本迁移到另一个版本,并用 z-schema 验证迁移结果。z-schema 支持 draft-04、draft-06、draft-07、draft-2019-09、draft-2020-12。
迁移工作流:先识别源草案(查看 $schema 或 id/$id 用法);在验证器上设置目标版本,如 const validator = ZSchema.create({ version: 'draft2020-12' });;用 validator.validateSchema(schema) 暴露不兼容处;按关键字映射逐项修复;反复验证直至通过。
主要关键字变更:id 改为 $id;definitions 改为 $defs;数组形式 items(元组)改为 prefixItems;additionalItems 在存在 prefixItems 时改为 items;布尔型 exclusiveMinimum/exclusiveMaximum 改为数值型;dependencies(字符串数组)改为 dependentRequired,dependencies(模式值)改为 dependentSchemas;$recursiveRef/$recursiveAnchor 改为 $dynamicRef/$dynamicAnchor。
主要迁移路径:draft-04 → draft-2020-12 跨度最大,按顺序重命名 id、把布尔排他边界转数值、重命名 definitions 并更新 $ref 路径、拆分 dependencies、把元组 items 转 prefixItems、补充 $schema 声明。draft-07 → draft-2020-12 改动较小,主要是 $defs、prefixItems、dependentRequired/dependentSchemas,可考虑采用 unevaluatedProperties/unevaluatedItems。draft-2019-09 → draft-2020-12 改动最少。
验证:迁移后用目标草案元模式校验模式本身,再用已知正确与已知错误的数据测试行为是否一致(validator.validate / validator.validateSafe)。
向后兼容:若需跨多草案工作,使用 version: 'none',由每个 schema 的 $schema 自行声明草案。
完整关键字映射与前后示例见 references/keyword-mapping.md。文档未提供安装命令、费用或平台信息。