Représentation JSON de la carte avec une clé complexe
Je veux sérialiser en JSON suivantes (java) structure de données:
class Machine {
String name;
Map<PartDescriptor, Part> parts;
}
class PartDescriptor {
String group;
String id;
hashCode()
equals()
}
class Part {
String group;
String id;
String description;
String compat;
...
...
}
Ce serait représentation JSON d'un Machine
?
Aussi (facultatif), point de me une JSON pour Java sérialiseur/deserializer qui serviront à appuyer la représentation
source d'informationauteur Op De Cirkel
Vous devez vous connecter pour publier un commentaire.
Je ferais quelque chose comme:
Si le "id" de chaque Pièce est unique, les "parties" de la propriété peut être un objet au lieu d'un tableau, avec la "id" de chaque partie servant de la clé.
Vous n'avez pas besoin d'annotations personnalisées ou sérialiseurs. En supposant que vous avez déjà des getters pour tous les champs dans
Part
etMachine
tout ce qui est vraiment manquant est untoString()
surPartDescriptor
. Si, pour quelque raison, vous n'avez pas de lecture fonctions, vous aurez besoin d'annoter les champs d'intérêt avec@JsonProperty
donc Jackson sait les champs à inclure dans le sérialisé de sortie. Cependant, il est préférable (et plus facile) de créer simplement des getters.La
toString()
surPartDescriptor
devrait revenir sur la touche que vous souhaitez utiliser pour votre correspondance. Comme une autre réponse suggère, vous pouvez tout simplement concaténer les champs appropriés:Ensuite, vous aurez comme par magie obtenir ce formulaire lorsque vous essayez de sérialiser un
Machine
avec JacksonObjectMapper
:Je voudrais faire cela. Le
parts
clé de haut niveau de l'objet serait unJSONArray
deJSONObject
qui ontkey
's etvalue
'. Lekey
serait un objet qui est votrePartDescriptor
et lavalue
serait votrePart
.En supposant que groupe+id donne une combinaison unique, et que ":" est autorisée délimiteur:
Il peut être rendu par le tableau suivant:
Le balisage se décompose en objet JSON en raison de l'absence de métadonnées via les attributs:
Sinon, Unicode peut simplifier la cartographie:
Qui peut être stringified:
à produire:
qui peut être analysé:
pour produire un objet littéral:
Références
HTMLTableRowElement
HTMLTableCellElement