2017-03-02 6 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

あなたは代わりにプロパティ一つ一つを定義するので、あなたは

"overrides": { 
     "type": "object", 
     "additionalProperties": { 
      "$ref": "#/definitions/key-objs" 
     } 
    } 
を行うことができます "additionalProperties": {schemaComesHere}

を使用して、非指定されたキーのスキーマを指定することができます

関連する問題