2016-07-06 2 views
0

JSON 스키마에는 a required property이 있으며 JSON 객체의 필수 필드를 나열합니다.JSON 스키마 : 필수 필드에 대한 XOR

{ 
    "type": "object", 
    "properties": { 
    "userId": { "type": "string" }, 
    "text":  { "type": "string" }, 
    }, 
    "required": ["userId", "text"] 
} 

나는 userId 필드, 또는 하나를 가지고 즉, 여러 사용자에게 메시지를 보낼 수 있도록한다고 가정 예를 들어, 다음 (간체) 스키마는 사용자에게 문자 메시지를 보내고 전화를 확인합니다 userIds의 배열 (둘 다 또는 둘 다 아님). JSON 스키마에서 이러한 조건을 표현할 수있는 방법이 있습니까?

물론이 경우 문제를 극복 할 수있는 방법이 있습니다 (예 : userId 단일 요소가있는 배열). 일반적으로 흥미롭고 유용합니다.

답변

2

전혀 좋지는 않지만 allOfoneOf에서 해킹 할 수 있다고 생각합니다. 다음과 같음 :

{ 
    "allOf" : [ 
     { 
     "type" : "object", 
     "properties" : { 
      // base properties come here 
     } 
     }, 
     "oneOf" : [ 
     { 
     "properties" : { 
      "userIds" : {"type" : "array"} 
      }, 
      "required" : ["userIds"] 
     }, 
     { 
      "properties" : { 
      "userId" : {"type" : "number"} 
      }, 
      "required" : ["userId"] 
     } 
     ] 
    ] 
} 
관련 문제