2017-05-10 11 views
0

내가 좋아하는 JSON 객체의 유효성을 검사하는 스키마 마련하려고했던 다음JSON 스키마가 정확히 하나의 속성에 특정 속성이 있는지 확인 할 수 있습니까?

{ 
"id":"some_id", 
"properties":{ 
    "A":{ 
    "name":"a", 
    "isindex":true 
    }, 
    "B":{ 
    "name":"b" 
    }, 
    "C":{ 
    "name":"c" 
    } 
} 
} 

거래는 다음과 같습니다

  1. 특성 A, B, C가 사전에 알 수없는 어떤 일 수있다 문자열.
  2. 속성 중 하나만 (A, B, C ...) 값에 "isindex"가 있습니다. 속성이 인덱스로 사용될 것임을 나타내는 true 키 - 값 쌍입니다. 즉, 다음은 유효하지 않습니다.

.

{ 
    "id":"some_id", 
    "properties":{ 
    "A":{ 
     "type":"string", 
     "isindex":true 
    }, 
    "B":{ 
    "type":"string" 
    }, 
    "C":{ 
     "type":"array", 
     "isindex":true 
    } 
    } 
} 

실제로 JSON 스키마가이 용도로 적합한 것인지 확실하지 않습니다.

일부 또는 모든 도움을 주실 수 있습니다!

+0

당신이 여기를 요구하고 무엇을 볼 어렵다 ... 이런 식으로 뭔가에 데이터 구조를 변경합니다. 조금 확장 할 수 있습니까? –

+0

@TravisJ 오타를 발견하고 수정했습니다 (하나만있는 것 -> 하나만있는 것). 그게 너를 혼란스럽게했을거야. 미안합니다. 조금 더 많은 컨텍스트가 도움이 될 수 있습니다. 내 질문에 유효성을 검사 할 개체는 형식 정의를 설명합니다. 유형은 여러 속성 (A, B, C, ...)을 가지며 속성 중 하나만 유형의 오브젝트에 대한 고유 한 ID (색인)로 사용해야합니다. JSON 스키마를 사용하여이를 확실하게하고 싶습니다. – AaronT

답변

1

JSON 스키마는 이러한 유형의 도구에 적합하지만 처리하지 못한 특정 사례를 발견했습니다. 최소한 하나는 특정 스키마와 일치한다고 주장 할 수 있지만 하나만 일치한다고 주장 할 수는 없습니다. 당신이 할 수있는

가장 좋은 것은

{ 
    "id":"some_id", 
    "properties":{ 
    "A":{ 
     "name":"a" 
    }, 
    "B":{ 
     "name":"b" 
    }, 
    "C":{ 
     "name":"c" 
    } 
    }, 
    "index": "A" 
} 
+0

Touche! "최소한 하나는 특정 스키마와 일치한다고 주장 할 수 있지만, 하나만 일치한다고 주장 할 수는 없습니다." 내 질문에 답한 것 같아. 감사! – AaronT