2012-12-17 1 views
0

일부 구성 파일을 정의 할 때 JSON을 사용하고 있는데 json scheme으로 유효성을 검사하고 싶습니다. 예 : 유효한키가 일부 사용자 정의 배열의 항목 중 하나 여야한다는 constaint 유지 방법

:

{ 
     "files": ["file1", "file2"], 
     "filelocations": { 
      "file1": "/etc/globalconfigs/file1.conf", 
      "file2": "/usr/bin/file2.sh" 
     } 
} 

잘못된을 (otherkey이 files에없는) 내 문제는 내가 어떤 개체의 키가 같은 JSON에 정의 된 배열의 항목의 하위 집합이어야한다는 것을 보장 할 것입니다 :

{ 
     "files": ["file1", "file2"], 
     "filelocations": { 
      "file1": "/etc/globalconfigs/file1.conf", 
      "otherkey": "/usr/bin/file2.sh" 
     } 
} 

등 내가 원하는 것은 filelocations의 키 files 배열에서 발견되는 것을 보장하는 것입니다. Althoug이 예제에서는 키 - 값을 결합하여 JSON의 구조를 변경할 수 있으므로 이런 종류의 제약이 필요하지는 않습니다. 제 경우에는 JSON을 이와 같이 변경할 수 없으므로 이를위한 검증 메커니즘.

내가 어떻게 이것을 달성 할 수 있습니까?

답변

1

JSON 스키마로이를 수행 할 수 없으며이를 보장 할 수있는 키워드가 없습니다.

모험을 좋아하는 사람이라면 (코드도 만들 수 있습니다) my JSON Schema API을 사용하고 필요에 맞게 맞춤 키워드를 코딩 할 수 있습니다. 그것은 가능합니다.

+0

답변 해 주셔서 감사합니다. 내 요구 사항이 JSON과 그 스키마를 사용하고 있거나 사용할 사용자에게 유효하고 공통적 인 문제라고 생각합니까? 이 경우 사용자 지정 키워드를 추가하면 사양을보다 성숙하게 만들 수 있습니다. 그렇지 않으면 JSON을 사용하여 코드에서이 요구 사항을 확인할 수 있기 때문에 가치가 없을 수도 있습니다. –

+0

솔직히 말해서 매우 일반적인 요구 사항이라고 생각하지 않습니다. 특히 JSON은 리팩터링되어 키를 언급하는 분리 된 배열이 필요하지 않기 때문에 가능합니다. – fge

+0

나는 이것이 일반적인 요구 사항이 아닐 수도 있고, 당신이 옳다고 생각했다. 나는 JSON을 리팩터링 할 수 있지만, 현재의 형태로는 나 자신과 사람들이 사용하기에 훨씬 편하다. 그래서이 작업을 계속하고 JSON을 사용하여 코드에서 확인합니다. 당신의 도움을 주셔서 감사합니다. –