是否允许在 JSON 架构中将 $ref 与其他关键字结合使用?

Is it allowed to combine $ref with other keywords in JSON Schema?

我正在学习 JSON 一个开源项目的架构。有关于将已定义的架构与一些附加关键字相结合的问题。

假设我已经定义了一些可通过参考获得的架构,例如 #/definitions/positiveInteger.

现在我想引用该类型并使用其他几个关键字对其进行扩展。例如,我想添加 enumdescription.

是否允许这样做:

{
    "$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 ]
}

我找不到正式的参考资料,也不确定验证工具会如何反应。

基本上我有两个问题:

我实际上更喜欢内联 $ref 而不是将它们包含在 allOf 和种类中,但不确定这是否合法。我什至在规范中找不到 $ref 的描述(只是几个例子)。

您必须使用 allOf 来扩展定义。这里是相关文档。

Any members other than "$ref" in a JSON Reference object SHALL be ignored.

从 Draft 2019-09 开始,$ref 和其他属性可以共存。

JSON Schema Spec

虽然规范似乎有点不清楚当引用模式和导入模式声明相同属性时会发生什么