在json对象java中向数组添加新元素

时间:2017-09-11 15:41:02

标签: java arrays json

我正在编写自动化脚本来验证REST API的json响应,我使用更快的xml来序列化并将java对象转换为json格式。 我有一个用户案例,我必须得到json响应并将一个新的数组元素添加到现有数组并将其发回。 GET之后的json响应如下所示:

{
   "name":"test",
   "id":"1234",
   "nodes":[
            {
                "nodeId":"node1"
            },
            {
                 "nodeId":"node2"
            }
    ]
}

对于这个json响应,我需要为nodes数组添加第三个条目 { "nodeId": "node3" }然后发布此内容。

有人可以帮我理解如何将新数组元素添加到现有数组中吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试:

//Your JSON response will be in this format
String response = "{ \"name\":\"test\", \"id\":\"1234\", \"nodes\":[ { \"nodeId\":\"node1\" }, { \"nodeId\":\"node2\" } ] }";
   try {
        JSONObject jsonResponse = new JSONObject(response);
        JSONArray nodesArray = jsonResponse.getJSONArray("nodes");
        JSONObject newEntry = new JSONObject();
        newEntry.put("nodeId","node3");
        nodesArray.put(newEntry);
        jsonResponse.put("nodes",nodesArray);
    } catch (JSONException e) {
        e.printStackTrace();
    }

现在,您可以根据需要发布jsonResponse.toString()

答案 1 :(得分:0)

我宁愿选择更清洁的方法,使用以下结构创建Object -

public class Response{
   private String name;
   private int id;
   private List<Node> nodes;
   <Getter & Setter>
}
public class Node{
   private String nodeId;
}
  1. 序列化json -
  2.   

    响应响应= objectMapper.readValue(responseJson,   Response.class);

    1. 将新的传入节点对象添加到response -
    2.   

      response.getNodes()。add(新节点(&#34; {新节点值}&#34;));

      1. 在发布之前反序列化 -
      2.   

        objectMapper.writeValueAsString(响应);