Tôi đang cố định nghĩa lược đồ json để giới hạn các thuộc tính của các đối tượng được kết hợp trong một mảng.lược đồ json để xác nhận hợp lệ mảng đối tượng với các yêu cầu anyOf và oneOf
Những gì tôi có cho đến nay là:
{
"title":"myCollection",
"properties":{
"things":{
"type":"array",
"items":[{
"title":"thingObj",
"type":"object",
"properties":{
"name":{
"type":"string"
},
"code":{
"type":"string"
},
"type":{
"type":"string",
"enum":["dog","cat"]
},
"rate":{
"type":"number"
},
"value":{
"type":"number"
}
},
"anyOf":[{
"properties":{
"name":{
"type":"string"
}
},"required":["name"]
},{
"properties":{
"code":{
"type":"string"
}
},"required":["code"]
},{
"properties":{
"type":{
"type":"string",
"enum":["new","existing"]
}
},"required":["type"]
}],
"oneOf":[{
"properties":{
"rate":{
"type":"number"
}
},
"required":["rate"]
},{
"properties":{
"value":{
"type":"number"
}
},
"required":["value"]
}],
"additionalProperties":false
}]
}
}
}
Bây giờ trao jsonobj sau:
{
"things": [
{
"name": "tabby",
"code": "meeow",
"type": "cat",
"value": 20
},
{
"name": "k9",
"code": "woofer",
"type": "dog",
"rate": 15
}
]
}
json schema validator này cung cấp một câu trả lời hợp lệ nhưng xác nhận này dường như chỉ áp dụng đối với các yếu tố đầu tiên trong mảng. Nếu bạn loại bỏ tất cả các trường được bao gồm trong mệnh đề anyOf hoặc mệnh đề oneOf trên phần tử đầu tiên thì xác thực không thành công. Điều tương tự trên phần tử mảng thứ hai không làm tăng sự thất bại mong muốn. Làm cách nào tôi có thể đảm bảo xác thực được chạy với từng thành viên mảng?