我们的一个开发伙伴问我们是否有办法在JSON Schema定义中指定接口版本。没有"$version"键,所以有没有公认的“标准”,我们应该遵循(我不能使用$id,因为我们在其他地方使用$ref的,所以文档不会验证更多)。我们在草案-6,所以$comment本身不可用。验证方面的XML Spy非常乐意向顶层添加一个"version"键,所以我可以这样做,但如果有更常用的方法,我宁愿这样做。
"$version"
$ref
$comment
"version"
91zkwejq1#
JSON Schema没有定义标准的方法来实现这一点。允许向Schema添加关键字,因为未知的关键字将被处理器忽略。我通常建议使用$id进行版本控制,语义版本控制是$id值的一部分,您必须更新您的引用,但这样您可以确保保持永远的期望。通常,大型项目创建发布包,然后在特定的semver下有一组模式。例如Human Cell Atlas:https://schema.humancellatlas.org/a也没有什么可以阻止您在模式根级别使用您选择的键创建一个新对象来包含您想要包含的关于模式的所有 meta信息。
$id
lxkprmvk2#
Snowplow的模式的SchemaVer语义版本控制是一个选项。
kknvjkwl3#
声明方言?JSON方案的一个版本称为方言。方言表示可用于评估方案的关键字和语义集。每个JSON方案版本都是JSON方案的一种新方言。JSON方案提供了一种声明方案符合哪种方言的方法,并提供了描述您自己的定制方言的方法。https://json-schema.org/understanding-json-schema/reference/schema.html#declaring-a-dialect
3条答案
按热度按时间91zkwejq1#
JSON Schema没有定义标准的方法来实现这一点。允许向Schema添加关键字,因为未知的关键字将被处理器忽略。
我通常建议使用
$id
进行版本控制,语义版本控制是$id
值的一部分,您必须更新您的引用,但这样您可以确保保持永远的期望。通常,大型项目创建发布包,然后在特定的semver下有一组模式。例如Human Cell Atlas:https://schema.humancellatlas.org/a
也没有什么可以阻止您在模式根级别使用您选择的键创建一个新对象来包含您想要包含的关于模式的所有 meta信息。
lxkprmvk2#
Snowplow的模式的SchemaVer语义版本控制是一个选项。
kknvjkwl3#
声明方言?
JSON方案的一个版本称为方言。方言表示可用于评估方案的关键字和语义集。每个JSON方案版本都是JSON方案的一种新方言。JSON方案提供了一种声明方案符合哪种方言的方法,并提供了描述您自己的定制方言的方法。
https://json-schema.org/understanding-json-schema/reference/schema.html#declaring-a-dialect