是否允许在 JSON 架构中将 $ref 与其他关键字结合使用?
Is it allowed to combine $ref with other keywords in JSON Schema?
我正在学习 JSON 一个开源项目的架构。有关于将已定义的架构与一些附加关键字相结合的问题。
假设我已经定义了一些可通过参考获得的架构,例如 #/definitions/positiveInteger
.
现在我想引用该类型并使用其他几个关键字对其进行扩展。例如,我想添加 enum
或 description
.
是否允许这样做:
{
"$ref" : "#/definitions/positiveInteger",
"description" : "This is positive integer with enums",
"enum" : [ 2, 4, 6, 8 ]
}
或者我必须这样做:
{
"allOf" : [ { "$ref" : "#/definitions/positiveInteger" } ],
"description" : "This is positive integer with enums",
"enum" : [ 2, 4, 6, 8 ]
}
我找不到正式的参考资料,也不确定验证工具会如何反应。
基本上我有两个问题:
- 像
enum
这样的验证关键字在第一种情况下应该有效吗?
- 如果我像第一种情况那样在
$ref
旁边包含元数据关键字 description
会不会有任何冲突?
我实际上更喜欢内联 $ref
而不是将它们包含在 allOf
和种类中,但不确定这是否合法。我什至在规范中找不到 $ref
的描述(只是几个例子)。
您必须使用 allOf
来扩展定义。这里是相关文档。
Any members other than "$ref" in a JSON Reference object SHALL be ignored.
从 Draft 2019-09 开始,$ref 和其他属性可以共存。
虽然规范似乎有点不清楚当引用模式和导入模式声明相同属性时会发生什么
我正在学习 JSON 一个开源项目的架构。有关于将已定义的架构与一些附加关键字相结合的问题。
假设我已经定义了一些可通过参考获得的架构,例如 #/definitions/positiveInteger
.
现在我想引用该类型并使用其他几个关键字对其进行扩展。例如,我想添加 enum
或 description
.
是否允许这样做:
{
"$ref" : "#/definitions/positiveInteger",
"description" : "This is positive integer with enums",
"enum" : [ 2, 4, 6, 8 ]
}
或者我必须这样做:
{
"allOf" : [ { "$ref" : "#/definitions/positiveInteger" } ],
"description" : "This is positive integer with enums",
"enum" : [ 2, 4, 6, 8 ]
}
我找不到正式的参考资料,也不确定验证工具会如何反应。
基本上我有两个问题:
- 像
enum
这样的验证关键字在第一种情况下应该有效吗? - 如果我像第一种情况那样在
$ref
旁边包含元数据关键字description
会不会有任何冲突?
我实际上更喜欢内联 $ref
而不是将它们包含在 allOf
和种类中,但不确定这是否合法。我什至在规范中找不到 $ref
的描述(只是几个例子)。
您必须使用 allOf
来扩展定义。这里是相关文档。
Any members other than "$ref" in a JSON Reference object SHALL be ignored.
从 Draft 2019-09 开始,$ref 和其他属性可以共存。
虽然规范似乎有点不清楚当引用模式和导入模式声明相同属性时会发生什么