使用Jackson将数组元素添加到JSON

时间:2014-04-23 16:07:21

标签: java json jackson

我有一个看起来像这样的JSON

[
   {
      "itemLabel":"Social Media",
      "itemValue":90
   },
   {
      "itemLabel":"Blogs",
      "itemValue":30
   },
   {
      "itemLabel":"Text Messaging",
      "itemValue":60
   },
   {
      "itemLabel":"Email",
      "itemValue":90
   },
]

我想将所有这些对象放入一个数组中,以便在我的一个代码中更容易地操作它。因此我想做一些像

这样的事情
[
    {
        "data": [
            {
                "itemLabel": "Social Media",
                "itemValue": 90
            },
            {
                "itemLabel": "Blogs",
                "itemValue": 30
            },
            {
                "itemLabel": "Text Messaging",
                "itemValue": 60
            },
            {
                "itemLabel": "Email",
                "itemValue": 90
            }
        ]
    }
]

如何使用Jackson添加data数组元素?我大部分时间都是用杰克逊读过的,但没有做太多的写作。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:9)

我不完全确定您的意图是什么,并且可能有一个更优雅的解决方案(使用POJO而不是Collections和Jacksons JSON表示),但我想这个例子会清除它。但是如果你有一些更复杂的处理,你可能想要编写自定义(de)序列化器或类似的东西。使用Jackson 2.3.3撰写

ObjectMapper mapper = new ObjectMapper();
JsonNode parsedJson = mapper.readTree(json); //parse the String or do what you already are doing to deserialize the JSON
ArrayNode outerArray = mapper.createArrayNode(); //your outer array
ObjectNode outerObject = mapper.createObjectNode(); //the object with the "data" array
outerObject.putPOJO("data",parsedJson); 
outerArray.add(outerObject);
System.out.println(outerArray.toString()); //just to confirm everything is working