私の問題は、マップのコンテンツをJSONにシリアル化していることです。
出力(JSON)には、キー/名前の構文規則に従うオブジェクトがあります。
キーはマップキーから作成され、名前は値から作成されます。
モデルの例:
class Storage {
Map<String,String> values = new HashMap<>();
{
map.put("key1","key1");
map.put("key2","key2");
map.put("key3","key3");
}
}
JSONサンプルオブジェクト:
{
key1=value1,
key2=value2,
key3=value3
}
JSONスキーマ:
{
"name": "storage",
"description": "Store of key values",
"properties": {
// How can we describe the properties if we do not know the name ?
}
}
問題は、値がどのようになるかわからないが、それらがいくつかになることはわかっていることです。
スキーマの完全な定義を提供してくれますか?
免責事項:
これは次のようにシリアル化できることも知っています
{
values: [
{key="key1", value="value1"},
{key="key2", value="value2"},
{key="key3", value="value3"}
]
}
ただし、JSONに配列を含める必要はありません。
あなたのバリデーターがそれをサポートしていると仮定すると、 patternProperties を使用できます。
スキーマについて...
{
"title": "Map<String,String>",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
}
...そしてドキュメント...
{
"foo":"bar",
"baz":1
}
...プロパティfooの値は、文字列であるため有効ですが、baz数値であるため検証に失敗します。
@augurar "additionalProperties"によって提案されたソリューションを使用しました:{"type": "string"}
aWS API Gatewayモデルの場合....およびSDKは、Java/Android SDK
@Arne Burmeister-私の場合-ソリューション1は必要に応じて機能しませんでしたが、モデル(スキーマ作成)でエラーは発生しませんでした