我正在为其中一个开源项目学习JSON Schema。有一个关于将已定义的模式与一些其他关键字相结合的问题。
假设我已经定义了一些可通过引用获得的架构,例如#/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
这样的验证关键字是否适用于第一种情况?description
旁边添加$ref
之类的元数据关键字,会有任何冲突吗?我实际上更喜欢内联$ref
而不是将它们包含在allOf
和种类中,但不确定这是否合法。我甚至无法在规范中找到$ref
的描述(只是几个例子)。
答案 0 :(得分:3)
您必须使用allOf
来扩展定义。这是相关文档。
JSON参考对象中除“$ ref”以外的任何成员都应被忽略。