如何将属性指定为null或引用?

vib*_*blo 23 jsonschema

我有一个json文档,其中一个部分可以是null或子对象,如下所示:

[{
    "owner":null    
},
{
    "owner":{
        "id":1
    }   
}]
Run Code Online (Sandbox Code Playgroud)

问题是,是否可以使用ref在json模式草案v4中对此进行建模?

我想要的是这样的

{
    "type":"object",
    "properties":{
        "owner":{
            "type":["null", "object"],
            "$ref":"#/definitions/id"
        }
    },
    "definitions":{
        "id":{
            "type":"object",
            "properties":{
                "id":{
                    "type":"number"
                }
            }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

clo*_*eet 37

如果"type":"object"从定义中删除,您发布的内容应该有效.

但是,使用更简洁,更明确的方式来指定备选方案oneOf.您可以保持您的"id"定义不变,只需使用:

    "owner":{
        "oneOf": [
            {"type": "null"},
            {"$ref":"#/definitions/id"}
        ]
    }
Run Code Online (Sandbox Code Playgroud)