maxItems / minItems可以与JSON模式中的$ ref一起使用

时间:2016-04-04 15:10:45

标签: json jsonschema

在定义部分中给出具有以下内容的JSON模式:

"phoneNumber": {
            "type": "object",
            "properties": {
                "countryCode": {
                    "type": "number"
                    },
                "areaCode": {
                    "type": "number"
                    },
                "number": {
                    "type": "number"
                    },
                "extension": {
                    "type": "number"
                    },
                "service": {
                    "type": "string",
                    "enum": ["Voice", "Fax", "Data"]
                    },
                "class": {
                    "type": "string",
                    "enum": ["Switchboard", "Direct", "PA", "Mobile"]
                    }
                }
            }

如果我想在其他地方使用$ ref包含phoneNumber并希望JSON验证它是否包含多次出现的phoneNumber,我可以使用maxItems / minItems:

"person": {
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
            },
        "phoneNumber": {
            "$ref": "#/definitions/phoneNumber"
            //can I use maxItems/minItems here?
            }
        }
    }

我可以在这里使用maxItems和minItems,或者我必须做以下这样的事情才能验证:

"phoneNumber": {
    "allOf": { "$ref": "#/definitions/phoneNumber" },
    "maxItems": 4
}

1 个答案:

答案 0 :(得分:1)

$ref必须独立。您使用allOf标识的选项是最佳方式。

  

JSON参考对象中除“$ ref”以外的任何成员都应被忽略。