이 단순화 된 JSON-스키마입니다 :JSON-스키마 (가치에 의하여) 조건부 의존성
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "user",
"type": "object",
"properties": {
"account": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["COMPANY", "PERSON"]
}
},
"required": ["type"]
},
"person": {
"type": "object",
"properties": {
"firstName": { "type": "string" },
"lastName": { "type": "string" }
},
"required": ["firstName", "lastName"]
},
"company": {
"type": "object",
"properties": {
"name": { "type": "string" },
"taxNumber": { "type": "string" }
}
}
},
"required": ["account", "person"]
}
내가 달성하고자하는 것은 : account.type
가 "COMPANY"
로 설정되어
- 경우 가
company
개체 및 그 속성은 이어야합니다.이어야합니다.
"PERSON"
로는 issetaccount.type
경우company
객체는 옵션해야한다.company
개체가있는 경우company.name
및company.taxNumber
은 이어야하며이어야합니다.
이는 oneOf
에서 두 개의 긴 서브 스키마를 정의하지만이 account
때문에 너무 많은 중복과 복잡한 스키마를 의미하고 company
이 단순화 된 버전보다 더 많은 속성이 있습니다에 의해 달성 될 수있다.
AFAIK, 스키마에서 특정 값을 정의하는 유일한 방법은 enum
키워드를 단일 항목과 함께 사용하는 것입니다. dependencies
키워드로 시도했지만 도움이되지 않았습니다.
데이터 객체의 구조를 변경하지 않고도 생각할 수 있습니까?
어떤 언어를 사용하고 있습니까? 자바 스크립트입니까? – esp
JS하지만 언어는 중요하지 않습니다. 이 작업은 JS 코드가 아닌 JSON 스키마 내에서 수행해야합니다. –