2016-12-22 1 views
1

JSON Schema - specify field is required based on value of another field을 시도했지만 다음과 같은 상황에서는 작동하지 않습니다.중첩 필드의 값을 기반으로 json 스키마 필드가 필요합니다.

예 1

{ 

    "part1": { 
     "subPartA" : { 
      "value": "X" 
     } 
    }, 
    "partX": { 
     "propXX": "val1", 
     "prop2": null 

    } 
} 

예를 part1.subPart1.value = "X"partY.propYY가 필요한 경우 하나 partX.propXX이 필요 할 않는 방법이

{ 

    "part1": { 
     "subPartA" : { 
      "value": "Y" 
     } 
    }, 
    "partY": { 
     "propYY": "val123", 
     "prop2": null 

    } 
} 

part1.subPart1.value = "Y"

경우

? 당신은 데이터의 값이 (JSON 스키마 키워드를 사용 할 수 없습니다) 필수 속성 이름의 일부가되고 싶어한다는 것을 의미하지 않는

답변

1

,이 상관 관계를 수행 할 수 있습니다

{ 
    "type": "object", 
    "required": ["part1"], 
    "properties": { 
    "part1": { 
     "type": "object", 
     "required": ["subPartA"], 
     "properties": { 
     "subPartA": { 
      "type": "object", 
      "required": ["value"], 
      "properties": { 
      "value": { 
       "type": "string" 
      } 
      } 
     } 
     } 
    } 
    }, 
    "anyOf": [ 
    { 
     "required": ["partX"], 
     "properties": { 
     "part1": { 
      "properties": { 
      "subPartA": { 
       "properties": { 
       "value": { 
        "enum": ["X"] 
       } 
       } 
      } 
      } 
     }, 
     "partX": { 
      "type": "object", 
      "required": ["propXX"], 
      "properties": { 
      "propXX": { 
       "type": "string" 
      } 
      } 
     } 
     } 
    }, 
    { 
     "required": ["partY"], 
     "properties": { 
     "part1": { 
      "properties": { 
      "subPartA": { 
       "properties": { 
       "value": { 
        "enum": ["Y"] 
       } 
       } 
      } 
      } 
     }, 
     "partY": { 
      "type": "object", 
      "required": ["propYY"], 
      "properties": { 
      "propYY": { 
       "type": "string" 
      } 
      } 
     } 
     } 
    } 
    ] 
} 
+0

이 작동하지 않습니다 - 시도 - http://json-schema-validator.herokuapp.com/. 내 질문에 쉼표를 삽입하여 JSON 인스턴스를 유효하게 만들었습니다. – bhantol

+0

은 (는) 귀하의 속성 이름과 혼동되었습니다 : part/prop ... Corrected. – esp

+0

http://jsonschemalint.com/#/version/draft-05/markup/json?gist=a648a6e220dbe6488b4278279de17597 – esp