Meilleure façon d'utiliser Jackson JsonNodeFactory
Je suis l'aide de Jackson pour construire une coutume objet JSON. Est la bonne façon d'aller à ce sujet?
Il semble bien fonctionner (et la sortie est correcte) mais je suis peut être à côté de la façon dont j'utilise JsonNodeFactory. Est l'objet censés être passés comme je l'ai fait ici?
JsonNodeFactory factory = JsonNodeFactory.instance;
ObjectNode dataTable = new ObjectNode(factory);
ArrayNode aaData = new ArrayNode(factory);
for (PkgLoad pkgLoad : pkgLoadList) {
ObjectNode row = new ObjectNode(factory);
row.put("ounces", pkgLoad.ounces);
row.put("revolutions", pkgLoad.revolutions);
aaData.add(row);
}
dataTable.put("aaData", aaData);
Vous devez vous connecter pour publier un commentaire.
Cela fonctionne, même si l'intention est que c'est l'usine qui crée des instances. Mais le plus souvent vous venez d'accéder à l'ensemble de l'aide ObjectMapper, comme:
La raison principale pour séparer JsonNodeFactory est de vous permettre de créer des types de nœuds (généralement sous-classes d'instances standard); et ensuite configurer ObjectMapper à l'utilisation différente de l'usine.
Pour plus de commodité, ArrayNode et ObjectNode faire référence à une usine d'instance, qui est utilisé avec "putArray" et d'autres méthodes qui ont besoin de créer de nouveaux nœuds.
Juste une suggestion, il serait plus facile de traiter directement avec les types de données simples et sérialiser ces JSON et à l'arrière à l'aide de Jackson ObjectMapper, plutôt que de traiter avec les premières Jackson Treemodel
Donc dans votre exemple, vous pouvez créer une structure du type suivant:
Alors ce qui suit va générer approprié json pour vous:
Si vous faites beaucoup de
JsonNode
bâtiment dans le code, vous pouvez peut-être intéressant dans l'ensemble des services publics. Le bénéfice de l'aide est de soutenir un plus naturel, le chaînage de style mieux que montre la structure du JSON en vertu de construction.Voici un exemple d'utilisation:
Qui est équivalente à la suivante JSON:
Voici les classes:
Noter que la mise en œuvre utilise Lombok, mais vous pouvez facilement desugar pour remplir le Java.
Cela fonctionne bien. Je pense que c'est un moyen plus facile.