2017-03-02 2 views
0

내가 무엇을하려고하는지 설명하겠습니다. 내 JSON이중첩 된 객체에 대한 공통 정의 재정의

My.json과 같은 :

{ 
    "overrides": { 
     "key1": { 
      "DRM": { 
       "queue": "q1", 
       "resource": "r1m<0.5" 
      } 
     }, 
     "key2": { 
      "DRM": { 
       "queue": "q2", 
       "resource": "r1m<0.4" 
      } 
     } 
    } 
} 

내 스키마 :

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "id": "test-schema.json", 
    "definitions": { 
     "DRM": { 
      "type": "object", 
      "properties": { 
       "queue": { 
        "type": "string" 
       }, 
       "resource": { 
        "type": "string" 
       } 
      }, 
      "additionalProperties": false 
     }, 
     "key-objs": { 
      "type": "object", 
      "properties": { 
       "DRM": { 
        "$ref": "#/definitions/DRM" 
       } 
      }, 
      "additionalProperties": false 
     } 
    }, 
    "type": "object", 
    "properties": { 
     "overrides": { 
      "type": "object", 
      "properties": { 
       "key1": { 
        "$ref": "#/definitions/key-objs" 
       }, 
       "key2": { 
        "$ref": "#/definitions/key-objs" 
       } 
      } 
     } 
    } 
} 

내 문제는 때마다 내가 정의하는 새로운 keyoverrides 내부 (예 : key3, key4), 내 스키마를 업데이트해야합니다. key-objs을 참조하십시오.

나는 overrides 개체를 목록으로 만들 수 있고 목록의 모든 항목을 key-objs으로 정의 할 수 있음을 알고 있습니다. 그러나 나는 overrides을 목록으로 바꾸고 싶지 않습니다.

overrides 안에있는 모든 물체가 독점적으로 지정하지 않고 key-objs을 참조해야한다고 말하는 방법이 있습니까?

답변

1

당신은 "additionalProperties": {schemaComesHere}

을 사용 그래서 그 대신 중 하나에 의해 속성을 정의되지 않은 지정된 키의 스키마를 지정할 수 있습니다, 당신은 할 수

"overrides": { 
     "type": "object", 
     "additionalProperties": { 
      "$ref": "#/definitions/key-objs" 
     } 
    }