Mon problème est que je sérialise le contenu de la carte en JSON.
Dans la sortie (JSON), j'ai un objet qui suit la règle de syntaxe clé/nom.
La clé est créée à partir de la carte, et le nom de la valeur.
Exemple de modèle:
class Storage {
Map<String,String> values = new HashMap<>();
{
map.put("key1","key1");
map.put("key2","key2");
map.put("key3","key3");
}
}
Exemple d'objet JSON:
{
key1=value1,
key2=value2,
key3=value3
}
Schéma JSON:
{
"name": "storage",
"description": "Store of key values",
"properties": {
// How can we describe the properties if we do not know the name ?
}
}
Le problème est que je ne sais pas quelles seront les valeurs, mais je sais qu’il en sera.
Pouvez-vous m'aider à me fournir la définition complète du schéma?
Avertissement:
Je sais que cela peut être aussi sérialisé comme
{
values: [
{key="key1", value="value1"},
{key="key2", value="value2"},
{key="key3", value="value3"}
]
}
mais est ne veulent pas avoir tableau dans le JSON.
En supposant que votre validateur le supporte, vous pouvez utiliser patternProperties .
Pour le schéma ...
{
"title": "Map<String,String>",
"type": "object",
"patternProperties": {
".{1,}": { "type": "string" }
}
}
... et le document ...
{
"foo":"bar",
"baz":1
}
... la valeur de la propriété foo est valide car il s'agit d'une chaîne mais baz échoue à la validation car il s'agit d'un nombre.
J'ai utilisé la solution suggérée par @augurar "AdditionalProperties": {"type": "string"}
pour AWS API Gateway Model .... et le SDK a pu générer la variable Map requise dans le SDK Java/Android
@Arne Burmeister - dans mon cas - la solution 1 n'a pas fonctionné comme prévu - bien qu'elle n'ait pas donné d'erreur dans le modèle (schéma créé)