如何修改jsonschema ref以支持null类型



现在我有了一个类似的大型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" }
]
}

相关内容

  • 没有找到相关文章

最新更新