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

2022-09-04 20:08:04

我有一个看起来像这样的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 添加该数组元素?我主要使用Jackson阅读,但没有写太多。任何帮助将不胜感激。data


答案 1

我不完全确定你的意图是什么,可能有一个更优雅的解决方案(使用POJO而不是集合和Jacksons JSON表示),但我想这个例子会给你澄清。但是,如果您有一些更复杂的处理,则可能需要编写自定义(反)序列化程序或类似的东西。使用 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

答案 2