------------ Josn模式-------------

{
    "type": "object",
    "properties": {
        "street_address": {
            "type": "string"
        },
        "city": {
            "type": "string"
        },
        "state": {
            "type": "string"
        }
    },
    "required": [
        "street_address"
    ],
    "additionalProperties": false
}

在上面的架构中,我想在城市和州之间创建一个选择。可以在json中输入城市或州名。所以下面的json将是无效的
{
    "street_address": "abc",
    "city": "anv",
    "state": "opi"
}

低于1应该是有效的
{
    "street_address": "abc"
}

或者
{
    "street_address": "abc",
    "city": "anv"
}

或者
{
    "street_address": "abc",
    "state": "opi"
}

可以请一个人帮我修改以上架构以实现目标。

最佳答案

当只有一个替代项应包含时,使用“oneOf”,而至少应具有一种替代项时,请使用“anyOf”。

您无需在oneOf中重复通用属性。实现目标的最短方法是:

{
    "type" : "object",
    "properties" : {
        "street_address" : {
            "type" : "string"
        },
        "city" : {
            "type" : "string"
        },
        "state" : {
            "type" : "string"
        }
    },
    "oneOf" : [{
            "required" : ["city"]
        }, {
            "required" : ["state"]
        }
    ],
    "required" : [
        "street_address"
    ],
    "additionalProperties" : false
}

10-07 13:51