다른 중첩 객체의 속성 존재 여부에 따라 속성이 필요한 json 스키마 (초안 4)를 작성해야합니다. 나는 이미 행운을 빌면서 많은 것을 검색했다. (anyOf, oneOf, not, dependencies).Json Schema : 특정 중첩 객체에 특정 속성이있는 경우에만 속성을 지정하십시오.
아마도 json 스키마에서이 작업을 수행 할 수 없습니까?
이 내 단순화 된 스키마입니다 :
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": ["dog"],
"properties": {
"dog": {
"type": "object",
"required": ["bananas"],
"properties": {
"bananas": { "$ref": "bananas.json" },
"thing": {
"type": "object",
"properties": {
"total": { "type": "string" }
}
}
}
}
}
}
그리고 이것은 bananas.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": ["banana"],
"definitions": {
"non-empty-string": {
"type": "string",
"minLength": 1
}
},
"properties": {
"banana": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["unit"],
"properties": {
"unit": { "type": "string" },
"thing": {
"type": "object",
"anyOf": [
{ "required": [ "tax_transfers" ] },
{ "required": [ "tax_retentions" ] }
],
"properties": {
"tax_transfers": {
"type": "object",
"required": ["tax_transfer"],
"properties": {
"tax_transfer": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"rate": { "type": "string" }
}
}
}
}
},
"tax_retentions": {
"type": "object",
"required": ["tax_retention"],
"properties": {
"tax_retention": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"rate": { "type": "string" }
}
}
}
}
}
}
}
}
}
}
}
}
입니다 내가 필요로하는 배열에 하나 이상의 개체는 바나나에서 (A '일'속성이있는 경우 -> 바나나 -> 건). 그러면 (dog -> thing)의 'thing'속성이 필요합니다.
도움이 될 것입니다.
안녕 제이슨, 나는 크게 철저한 설명을 주셔서 감사합니다. json-schema로 복잡한 논리를 만드는 법을 실제로 이해할 수있었습니다. 감사! –