Comment créer JSON Schema de Nom/Valeur de la structure?
Mon problème est que je suis la sérialisation du contenu de la carte en JSON.
Dans la sortie (JSON), j'ai un objet qui suivent clé/nom de règle de syntaxe.
La clé est créée à partir de la carte de clé, et le nom de la valeur.
Modèle Exemple:
class Storage {
Map<String,String> values = new HashMap<>();
{
map.put("key1","key1");
map.put("key2","key2");
map.put("key3","key3");
}
}
JSON Exemple objet:
{
key1=value1,
key2=value2,
key3=value3
}
JSON Schema:
{
"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 ce que les valeurs seront mais je sais qu'ils seront quelques-uns.
Pouvez-vous m'aider à me donner la définition complète de schéma?
Avertissement:
Je sais que cela peut aussi être sérialisé en tant que
{
values: [
{key="key1", value="value1"},
{key="key2", value="value2"},
{key="key3", value="value3"}
]
}
mais ne veulent pas avoir de tableau dans le JSON.
- les sons comme les propriétés que vous avez serait un tableau de "clé": <keyvalue> "valeur": < valeur>.
- Je ne veux pas avoir un tableau de paires. Je voudrais avoir la clé=valeur en tant que partie de l'objet qui est valable pour ont et facile à désérialiser.
- Si vous vous demandez comment préciser le nom, la valeur de paires pour une situation dans laquelle vous ne connaissez pas les noms a priori? Ne peut pas être fait. De toute façon, n'est-ce pas votre objectif d'être en mesure de reconstituer la table de hachage? Dans ce cas, vous devrez passer par une boucle en ajoutant la Clé, la valeur de toute façon.
- Vous avez peut-être raison. Mais si il y a un moyen valable pour sérialiser et désérialiser de cet objet doit être possible de créer un Schéma pour elle. Pour conseiller les personnes qui peuvent s'attendre à un objet indéterminé intérieurs.
Vous devez vous connecter pour publier un commentaire.
En supposant que votre programme de validation prend en charge, vous pouvez utiliser patternProperties.
Pour le schéma...
...et le document...
...la valeur de la propriété foo est valide parce que c'est une chaîne mais baz l'échec de la validation, car c'est un nombre.
"additionalProperties": { "type": "string" }
. Ceci indique que toutes les propriétés qui n'est pas autrement spécifié doit satisfaire le schéma donné.J'ai utilisé la Solution proposée par @augurar
"additionalProperties": { "type": "string" }
pour d'API AWS Modèle de Passerelle .... et le kit de développement a été en mesure de générer la Carte de variable tel que requis en Java /Android SDK
@Arne Burmeister - dans mon cas - Solution 1 n'a pas fonctionné comme nécessaires - même si cela n'a pas donné toute erreur dans le Modèle (Schéma Créé)