如何解决如何修改 json 模式引用以支持空类型?
这样的大型 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#","$ref": "example 1"
}
我正在考虑将第一个架构分成两部分,一个用于不支持 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#","oneOf": [
{ "$ref": "example 1" },{ "type": "null" }
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。