2017-11-06 9 views
1

配列namesの少なくとも1つの要素の値がnickNameで、値がGinnyであることを、次のjsonで確認できますか?JSONスキーマ:配列に、プロパティで指定された値のオブジェクトが少なくとも1つ含まれていることを確認するにはどうすればよいですか?

{ 
    "names": [ 
    { 
     "firstName": "Hermione", 
     "lastName": "Granger" 
    }, { 
     "firstName": "Harry", 
     "lastName": "Potter" 
    }, { 
     "firstName": "Ron", 
     "lastName": "Weasley" 
    }, { 
     "firstName": "Ginevra", 
     "lastName": "Weasley", 
     "nickName": "Ginny" 
    } 
    ] 
} 

現在、ドラフト06バージョン(よくある質問here)を使用しています。

これは私の働いていないスキーマです:

{ 
    "$schema": "http://json-schema.org/draft-06/schema#", 
    "title": "Complex Array", 
    "description": "Schema to validate the presence and value of an object within an array.", 

    "type": "object", 
    "properties": { 
    "names": { 
     "type": "array", 
     "minItems": 1, 
     "items": { 
     "type": "object", 
     "properties": { 
      "firstName": { 
      "type": "string" 
      }, 
      "lastName": { 
      "type": "string" 
      }, 
      "nickName": { 
      "type": "string" 
      } 
     }, 
     "anyOf": [ 
      {"required": ["nickName"]} 
     ] 
     } 
    } 
    } 
} 
+0

あなたは[ "のParameterName"] = nilの辞書を使用することによって確認すること、そして、辞書形式にJSONに変換し、する必要があります。 –

答えて

1

私はdraft-06を使用してそれを把握するために管理しました。このバージョンでは、新しいキーワードcontainsが追加されました。この草案specificationによると:

このキーワードの

値が有効なJSONスキーマでなければなりませんが含まれています。 配列インスタンスは、要素の少なくとも1つが指定されたスキーマに対して有効である場合、 "contains"に対して有効です。

の作業スキーマ:!

{ 
    "$schema": "http://json-schema.org/draft-06/schema#", 
    "title": "Complex Array", 

    "type": "object", 
    "properties": { 
    "names": { 
     "type": "array", 
     "minItems": 1, 
     "contains": { 
     "type": "object", 
     "properties": { 
      "firstName": { 
      "type": "string" 
      }, 
      "lastName": { 
      "type": "string" 
      }, 
      "nickName": { 
      "type": "string", 
      "pattern": "^Ginny$" 
      } 
     }, 
     "required": ["nickName"] 
     }, 
     "items": { 
     "type": "object", 
     "properties": { 
      "firstName": { 
      "type": "string" 
      }, 
      "lastName": { 
      "type": "string" 
      }, 
      "nickName": { 
      "type": "string" 
      } 
     } 
     } 
    } 
    } 
} 
関連する問題