2017-10-27 11 views
7

JSONSchemaおよび検証を行うサブオブジェクトのプロパティ、このJSONオブジェクトを考える

{ 
    "objects": { 
     "foo": { 
      "id": 1, 
      "name": "Foo" 
     }, 
     "bar": { 
      "id": 2, 
      "name": "Bar" 
     } 
    } 
} 

これは、各サブオブジェクトは同じ構造を有しているサブオブジェクトを含むオブジェクトである - それらはすべて同じタイプです。各サブオブジェクトは一意にキーインされるため、名前付き配列のように動作します。

objectsプロパティ内の各オブジェクトがJSONスキーマ参照に対して検証されることを検証したいと考えています。

objects性のような配列であった場合:私のようなスキーマの定義でこれを検証することができ

{ 
    "objects": [ 
    { 
     "id": 1, 
     "name": "Foo" 
    }, 
    { 
     "id": 2, 
     "name": "Bar" 
    } 
    ] 
} 

{ 
    "id": "my-schema", 
    "required": [ 
    "objects" 
    ], 
    "properties": { 
    "objects": { 
     "type": "array", 
     "items": { 
     "type": "object", 
     "required": [ 
      "id", 
      "name" 
     ], 
     "properties": { 
      "id": { 
      "type": "integer" 
      }, 
      "name": { 
      "type": "string" 
      } 
     } 
     } 
    } 
    } 
} 

typearrayであるので、これが達成され、そしてこれによりitemsの検証が可能になります。

同様のことをネストしたオブジェクトでも実行できますか?

ありがとうございます!

答えて

3

あなたはこのような何か試すことができます。

{ 
    "id": "my-schema", 
    "type": "object", 
    "properties": { 
    "objects": { 
     "type": "object", 
     "patternProperties": { 
     "[a-z]+": { 
      "type": "object", 
      "properties": { 
      "id": { 
       "type": "integer" 
      }, 
      "name": { 
       "type": "string" 
      } 
      }, 
      "additionalProperties": false, 
      "required": [ 
      "id", 
      "name" 
      ] 
     } 
     } 
    } 
    } 
} 
0

上記の答えは小文字にオブジェクトのプロパティ名を制限するために働くの。あなたがプロパティ名を制限する必要がない場合、これは簡単です:

{ 
    "id": "my-schema", 
    "type": "object", 
    "properties": { 
    "objects": { 
     "type": "object", 
     "additionalProperties": { 
     "type": "object", 
     "properties": { 
      "id": { 
      "type": "integer" 
      }, 
      "name": { 
      "type": "string    } 
      } 
     }, 
     "required": [ 
      "id", 
      "name" 
     ] 
     } 
    } 
    } 
} 

私はそのキーワードを使用すると、それは解決よりも多くの問題を引き起こし、それがAであることがわかりますので、私は上記の回答から、内側"additionalProperties": falseを省略しました"name"と "id"以外のプロパティがある場合、内部オブジェクトの検証が失敗するようにする場合は、キーワードの有効な使用。

関連する問題