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?
InformationsquelleAutor cYn | 2014-04-24