Skip to main content
 首页 » 编程设计

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

2025年01月19日8sxdcgaq8080

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

[{ 
    "owner":null     
}, 
{ 
    "owner":{ 
        "id":1 
    }    
}] 

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

我想要的是这样的
{ 
    "type":"object", 
    "properties":{ 
        "owner":{ 
            "type":["null", "object"], 
            "$ref":"#/definitions/id" 
        } 
    }, 
    "definitions":{ 
        "id":{ 
            "type":"object", 
            "properties":{ 
                "id":{ 
                    "type":"number" 
                } 
            } 
        }  
    } 
} 

请您参考如下方法:

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

然而,一种更简洁、更明确的指定替代方案的方法是使用 oneOf .您可以保留您的 "id"定义不变,只需使用:

    "owner":{ 
        "oneOf": [ 
            {"type": "null"}, 
            {"$ref":"#/definitions/id"} 
        ] 
    }