特定の仕様を持つネストされたオブジェクトをいくつでも含めることができるjsonオブジェクトがあります。次に例を示します。
{
"Bob": {
"age": "42",
"gender": "male"
},
"Alice": {
"age": "37",
"gender": "female"
}
}
そして、次のようなスキーマが必要です。
{
"type": "object",
"propertySchema": {
"type": "object",
"required": [
"age",
"gender"
],
"properties": {
"age": {
"type": "string"
},
"gender": {
"type": "string"
}
}
}
}
私はそれを配列に変換し、オブジェクト内に「名前」をプッシュできることを知っています。その場合、私のスキーマは次のようになります。
{
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"age",
"gender"
],
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "string"
},
"gender": {
"type": "string"
}
}
}
}
でも辞書のような構造にしたいです。そのようなスキーマを作成することは可能ですか?
追加プロパティはキーワードです:
{
"type" : "object",
"additionalProperties" : {
"type" : "object",
"required" : [
"age",
"gender"
],
"properties" : {
"age" : {
"type" : "string"
},
"gender" : {
"type" : "string"
}
}
}
}
additionalProperties
は、さまざまな意味を持つ次の値を持つことができます。
"additionalProperties": false
これ以上のプロパティは許可されません。"additionalProperties": true
これ以上のプロパティが許可されます。これがデフォルトの動作です。"additionalProperties": {"type": "string"}
指定されたタイプ(ここでは「文字列」)の値がある場合、(任意の名前の)追加のプロパティが許可されます。"additionalProperties": {*any schema*}
追加のプロパティは、上記の例のように、提供されたスキーマを満たす必要があります。