在我的架构中,我有一组电话对象。每个对象都有一个“status”属性,它可以是三个值之一:“Primary”,“Active”和“Not-in-use”。
我想设置以下约束: 如果电话对象的数量> 0然后一个必须有status =“Primary”
这是否可以使用json架构?如果是这样,怎么样?
答案 0 :(得分:0)
这个架构非常接近你想要的。唯一的限制是"小学"电话号码必须是数组中的第一项。
你可能会得到"小学"通过not
的创造性使用,可以在数组中的任何位置。如果我搞清楚,我会更新答案。
{
"type": "object",
"properties": {
"phoneNumbers": {
"type": "array",
"items": [{ "$ref": "#/definitions/primaryPhone" }],
"additionalItems": { "$ref": "#/definitions/additionalPhone" }
}
},
"definitions": {
"phone": {
"type": "object",
"properties": {
"label": { "type": "string" },
"number": { "type": "string" }
},
"required": ["label", "number", "status"]
},
"primaryPhone": {
"allOf": [{ "$ref": "#/definitions/phone" }],
"properties": {
"status": { "enum": ["Primary"] }
}
},
"additionalPhone": {
"allOf": [{ "$ref": "#/definitions/phone" }],
"properties": {
"status": { "enum": ["Active", "Not-in-use"] }
}
}
}
}