2013-07-08 3 views
0

최근에 jsonschema를 발견했으며이를 사용하여 애써 왔지만 최근에 내가하고 싶은 일이 생겼습니다. 알아낼 수있었습니다.jsonschema : 다른 요소에 오류가없는 배열이 포함되어 있는지 확인

내가하고 싶은 것은 배열에 스키마와 일치하는 요소가 있어야한다는 것을 확인하는 것이지만 목록에있는 다른 요소에 대한 유효성 검사를 원하지 않습니다. ,

나는 "그 편곡의 유효성을 검사 같은 것을 할 수 있기를 원하는
arr = [ 
      {"some object": True}, 
      False, 
      {"AnotherObj": "a string this time"}, 
      "test" 
     ] 

은 부울입니다 속성 '어떤 목적'을 가진 개체를 포함

나는 다음과 같은 배열을 가지고 말 그렇지 않으면 오류가 발생하지만 다른 요소는 신경 쓰지 않습니다. "

목록의 다른 항목에 대한 유효성 검사를 원하지 않습니다. 목록에 적어도 한 번 스키마와 일치하는 요소가 포함되어 있는지 확인하기 만하면됩니다. 또한 요소가 배열에 도착하는 순서를 알지 못합니다. 문제는이 재산 ""도구를 가지고 배열의 모든 항목이 필요하다는 것이다

{"type": "array", 
    "items": { 
     "type": "object", 
     "properties": { 
      "tool": { 
       # A schema here to validate tool 
      }, 
     "required": ["tool"] 
     } 
    } 

, 그리고 내가 실제로 원하는 :

내가 좋아하는 스키마에 이미 시도했습니다.

아무에게도 도움이 될 수있는 사람이 있으면 알려 주시면 감사하겠습니다. 나는 앞으로 진전이없는 정말로 오랜 시간 동안 이걸 당황했다.

감사합니다.

답변

0

나는이 질문에 대한 답을 얻었습니다 : 사용 된 스키마는 (여기서 ... B가 ... 스키마가 필요로하는 것입니다) :

{ 
    "type": "array", 
    "not": { 
     "items": { 
      "not": {... B ...} 
     } 
    } 
} 

을 그것은 기본적으로 같은 것으로 밝혀 작동 "아닙니다 (항목이 B와 일치하지 않음)". 나는 그것이 왜 그런 식으로 작동하는지에 대해 100 % 명확하지는 않지만, 그렇기 때문에 나는 그것을 후손을 위해 공유 할 것이라고 생각했다.

+0

구를 더 좋은 방법은 "모든 항목이 B와 일치하지 않는지 확인하십시오"입니다. – cloudfeet

관련 문제