특정 배열 요소가 필요 : 나는 symbolic-name="displayName"
JSON 스키마 내가 JSON 스키마로 속성 목록을 정의
에 정확히 하나 개의 속성을 가지고 목록을 필요로 할
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"definitions": {
"attribute": {
"type": "object",
"properties": {
"symbolic-name": { "type":"string"},
"value": { "type":"string"}
},
"required": ["symbolic-name", "value"]
},
"displayname": {
"type": "object",
"properties": {
"symbolic-name": {"enum":["displayName"]},
"value": { "type":"string"}
},
"required": ["symbolic-name", "value"]
}
},
"properties": {
"attributes":{
"type": "array",
// This is the crucial point:
"items": {"oneOf": [
{"$ref": "#/definitions/attribute"},
{"$ref": "#/definitions/displayname"}
]},
"uniqueItems": true
}
}
}
을 유효한 데이터 객체가 될 것이다 :
{
"attributes":[
{"symbolic-name": "displayName", "value": "Display Name"},
{"symbolic-name": "somethingElse", "value": "value1"}
{"symbolic-name": "somethingElse", "value": "value2"}
]
}
이제 displayName 특성이 "oneOf"와 일치 할뿐만 아니라 두 가지 제한 사항이 모두 적용되므로 유효성 검사에 실패합니다. "allOf"로 변경할 수 없습니다. displayName 옆의 다른 모든 속성은 더 이상 일치하지 않기 때문입니다.