现在我有了一个类似的大型json模式
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A example schema",
"definitions": {
"stringArray": {
"type": "array",
"items": { "type": "string" },
"uniqueItems": true,
"default": []
}
},
"properties": {
"time": {"type": "string", "minLength": 5},
"id": {"type": "integer"},
"members": {
"type": "array",
"items": {
"properties": {
"id": {"type": "string"},
"email": {"type": "string"}
}
}
}
}
}
以及使用它的新模式
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A example schema",
"$ref": "example 1"
}
我想修改第二个模式,让一些字段支持null类型。
我正在考虑将第一个模式分为两部分,一部分用于不支持null的模式,另一部分用于需要支持null的方案。对于那些需要支持null的,我需要保留两个副本,一个支持null类型,一个不支持,因为它们在不同的情况下都是需要的。
我想知道是否有更简单的方法可以实现?
首先,重要的是,草案7忽略了$ref
的任何同级关键字,因此您需要将$ref
移动到聚合关键字中(我们在规范中称它们为"应用程序"(。通常使用allOf
:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A example schema",
"allOf": [
{ "$ref": "example 1" }
]
}
但对于您的应用程序,您将希望使用oneOf
,因为您希望包含另一个子模式,该子模式允许将null
值作为选项。
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "A example schema",
"oneOf": [
{ "$ref": "example 1" },
{ "type": "null" }
]
}