微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修改 json 模式引用以支持空类型?

如何解决如何修改 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?