2013-11-22 1 views
2

JSON 및 JSON 스키마 유효성 검사를 처음 사용합니다.2 개의 Json 스키마 병합

나는 하나의 직원 객체의 유효성을 검사하려면 다음 스키마 있습니다

{ 
    "$schema":"http://json-schema.org/draft-03/schema#", 
    "title":"Employee Type Schema", 
    "type":"object", 
    "properties": 
    { 
     "EmployeeID": {"type": "integer","minimum": 101,"maximum": 901,"required":true}, 
     "FirstName": {"type": "string","required":true}, 
     "LastName": {"type": "string","required":true}, 
     "JobTitle": {"type": "string"}, 
     "PhoneNumber": {"type": "string","required":true}, 
     "Email": {"type": "string","required":true}, 
     "Address": 
     { 
      "type": "object", 
      "properties": 
      { 
       "AddressLine": {"type": "string","required":true}, 
       "City": {"type": "string","required":true}, 
       "PostalCode": {"type": "string","required":true}, 
       "StateProvinceName": {"type": "string","required":true} 
      } 
     }, 
     "CountryRegionName": {"type": "string"} 
    } 
} 

와 나는 같은 직원 객체의 배열을 검증하기 위해 다음과 같은 스키마를 가지고 :

{ 
    "$schema": "http://json-schema.org/draft-03/schema#", 
    "title": "Employee set", 
    "type": "array", 
    "items": 
    { 
     "type": "object", 
     "properties": 
     { 
      "EmployeeID": {"type": "integer","minimum": 101,"maximum": 301,"required":true}, 
      "FirstName": {"type": "string","required":true}, 
      "LastName": {"type": "string","required":true}, 
      "JobTitle": {"type": "string"}, 
      "PhoneNumber": {"type": "string","required":true}, 
      "Email": {"type": "string","required":true}, 
      "Address": 
      { 
       "type": "object", 
       "properties": 
       { 
        "AddressLine": {"type": "string","required":true}, 
        "City": {"type": "string","required":true}, 
        "PostalCode": {"type": "string","required":true}, 
        "StateProvinceName": {"type": "string","required":true} 
       } 
      }, 
      "CountryRegionName": {"type": "string"} 
     } 
    } 
} 

당신이 보여 주시겠습니까 나에게 그들을 합병하는 방법 그래서 나는 하나의 단일 스키마를 사용하여 단일 직원 개체 또는 전체 컬렉션의 유효성을 검사 할 수 있습니다. 감사.

답변

1

(참고 :이 질문은 또한 JSON Schema Google Group에 요청했다,이 대답은 거기에서 적용됩니다.)

"$ref"를 사용하면 배열이 같은 것을 가질 수 있습니다

{ 
    "type": "array", 
    "items": {"$ref": "/schemas/path/to/employee"} 
} 
당신이 뭔가 배열 또는 단일 항목 싶은 경우

는, 당신은 "oneOf"를 사용할 수 있습니다 :

{ 
    "oneOf": [ 
     {"$ref": "/schemas/path/to/employee"}, // the root schema, defining the object 
     { 
      "type": "array", // the array schema. 
      "items": {"$ref": "/schemas/path/to/employee"} 
     } 
    ] 
} 

원래 Google 그룹스 응답에는 "definitions"을 사용하여 스키마를 구성하는 방법에 대한 조언이 포함되어 있으므로 이러한 모든 변형이 동일한 파일에 존재할 수 있습니다.