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

时间:2015-04-24 07:23:50

标签: json jsonschema

我正在为其中一个开源项目学习JSON Schema。有一个关于将已定义的模式与一些其他关键字相结合的问题。

假设我已经定义了一些可通过引用获得的架构,例如#/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 ]
}

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

基本上我在这里有两个问题:

  • enum这样的验证关键字是否适用于第一种情况?
  • 如果我在第一种情况下在description旁边添加$ref之类的元数据关键字,会有任何冲突吗?

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

1 个答案:

答案 0 :(得分:3)

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

  

JSON参考对象中除“$ ref”以外的任何成员都应被忽略。