2014-10-28 2 views
4

JSON 스키마 열거

JSON Schemas feature enums, which impose a constraint on the values of a string typeJSON 스키마 열거 형에서 대/소문자를 구분하지 않을 수 있습니까?

:

{ 
    "type": "array", 
    "items": [ 
     { 
      "type": "number" 
     }, 
     { 
      "type": "string" 
     }, 
     { 
      "type": "string", 
      "enum": ["Street", "Avenue", "Boulevard"] 
     }, 
     { 
      "type": "string", 
      "enum": ["NW", "NE", "SW", "SE"] 
     } 
    ] 
} 

이 스키마는 [1600, "Pennsylvania", "Avenue", "NW"] 같은 값의 유효성을 검사합니다.

문제

모두 Avenueavenue 어레이의 제 3 값으로 인정 될 수 있도록 enum 대소 문자를 구별 할 수있는 우아한 방법이 있는가?

다른 가능한 솔루션

내가 값 목록에 anyOf을 사용하고, 대소 문자를 구분하지 정규식에 대한 각각의 유효성을 검사 할 수 있습니다 -하지만 그 성가신, 오류가 발생하기 쉽고 우아.

답변

4

나는 이것에 대한 멋진 해결책을 찾지 못할 까봐 걱정됩니다. case-insensitive enums and several issues were commented에 대한 제안이있었습니다.

그래서 당신이 요구 사항을 피할 수 없다면, 정규식 솔루션이 유일한 실행 가능한 솔루션입니다. 또 다른 brute-force 접근법은 대문자 시작, 다른 모든 대문자 등으로 열거 형 값의 전체 목록을 작성한 다음 명시한대로 anyOf를 사용하는 것입니다. 이 json-schema의 생성을 자동으로 자동화 할 수 있습니다. 분명히 읽을 수 없을 것입니다.

어쨌든 나는 검증 전에 사전 처리 단계로이를 해결하려고 노력할 것입니다. 존재하는 경우 소문자로 변환 한 다음 유효성을 검사 할 수 있습니다. 나는 '더티 (dirty)'데이터를 허용하기 위해 json-schema 스펙을 사용하도록 강요 받는다.