Linux命令行下如何通过元Schema校验完整JSON Schema文件合法性
你之前的校验逻辑完全搞反了。
你要排查自己写的JSON Schema文件里的拼写错误,本质是校验你写的Schema本身是否符合JSON Schema规范,这时候应该把你写的Schema文件当成「待校验的普通JSON实例」,用官方提供的元Schema作为校验规则。
你之前把自己写的Schema当成校验规则去跑,触发了JSON Schema的默认逻辑:properties字段下定义的约束,只有待校验实例存在对应字段时才会生效。你把test02.json当成实例校验的时候,实例里根本没有browser这个字段,自然不会检查properties.browser下的type拼写错误。
正确操作步骤
1. 直接执行元Schema校验
你已经提前下载了2020-12版本的全套元Schema,存放在meta目录下,直接执行以下命令就能校验你写的Schema(以test02.json为例)的全层级错误:
jsonschema -i test02.json ./meta/core.json
执行后就会正常抛出嵌套层级的objectx拼写错误。
2. 离线校验配置
如果提示无法拉取元Schema引用,可通过--schema-store参数指定本地元Schema的映射,不需要联网就能完成校验:
jsonschema --schema-store '{"https://json-schema.org/draft/2020-12/": "./meta/"}' -i test02.json ./meta/core.json
可选替代工具
如果觉得Python jsonschema的参数配置繁琐,也可以用AJV的命令行工具ajv-cli,对Schema规范的支持更完善,操作更简便:
# 先安装Node.js环境后执行全局安装 npm install -g ajv-cli # 执行全层级Schema校验 ajv validate -s https://json-schema.org/draft/2020-12/schema -d test02.json --strict
内容的提问来源于stack exchange,提问作者eNca
相关产品推荐
相关产品推荐

