Как создать схему JSON для структуры Name/Value?
Моя проблема в том, что я сериализую содержимое карты в 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.
Ответы
Ответ 1
Предполагая, что ваш валидатор поддерживает его, вы можете использовать patternProperties.
Для схемы...
{
"title": "Map<String,String>",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
}
... и документ...
{
"foo":"bar",
"baz":1
}
... значение свойства foo является допустимым, поскольку оно является строкой, но baz не выполняет проверку, потому что это число.
Ответ 2
Я использовал решение, предложенное @augurar
"дополнительные свойства": { "type": "string" }
для AWS API Gateway Model.... и SDK смог сгенерировать переменную Map, как требуется в Java/Android SDK
@Arne Burmeister - в моем случае - решение 1 не работало по мере необходимости - хотя оно не дало никаких ошибок в модели (созданной схеме)