Ajout de la propriété de JSON à l'aide de Jackson
Donc mon jsonStr
est-ce
[
{
"data": [
{
"itemLabel": "Social Media",
"itemValue": 90
},
{
"itemLabel": "Blogs",
"itemValue": 30
},
{
"itemLabel": "Text Messaging",
"itemValue": 60
},
{
"itemLabel": "Email",
"itemValue": 90
}
]
}
]
Je veux ajouter une propriété après la data
tableau comme ceci
[
{
"data": [
{
"itemLabel": "Social Media",
"itemValue": 90
},
{
"itemLabel": "Blogs",
"itemValue": 30
},
{
"itemLabel": "Text Messaging",
"itemValue": 60
},
{
"itemLabel": "Email",
"itemValue": 90
}
],
"label": "2007"
}
]
De lecture ici il est dit de faire quelque chose comme
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(jsonStr);
((ObjectNode) jsonNode).put("label", "2007");
String json = mapper.writeValueAsString(jsonNode);
return json;
Le problème est que je reçois un message d'erreur
java.lang.ClassCastException: com.fasterxml.jackson.databind.node.ArrayNode cannot be cast to com.fasterxml.jackson.databind.node.ObjectNode
Ce que je fais mal? Je suis actuellement à l'aide de Jackson-core 2.2.2
- Votre nœud de haut niveau représente un tableau, pas un objet. Vous avez besoin d'aller un levier plus profond avant de vous pouvez ajouter la propriété.
- Qui efface jusqu'pourquoi j'obtiens le message d'erreur, mais pourriez-vous développer un peu plus? Je ne suis pas sûr de la façon d'aller plus loin. Je vois que je vais avoir besoin de ArrayNode?
Vous devez vous connecter pour publier un commentaire.
Votre nœud de haut niveau représente un tableau, pas un objet. Vous avez besoin d'aller à un niveau plus profond avant de vous pouvez ajouter la propriété.
Vous pouvez utiliser quelque chose comme ceci:
Bien sûr, vous voudrez peut-être ajouter une gestion d'erreur si la structure n'a pas l'air comme vous vous attendez.