在java中为json节点添加新的键值

时间:2017-07-28 05:59:05

标签: java json

我有JSON文件:

{
   "id":1,
   "name":"abc",
   "addressDetails":
      {
        "City":"NewYork"
      }
}

我想在节点'addressDetails'中再添加一个键值(“pinCode”:“414141”)。

我尝试使用:

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(new File("D://test.json"));
ObjectNode node = mapper.createObjectNode();
node.with("addressDetails").put("pinCode", "414141"); 

但它没有被添加,我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试

你应该修改文件路径

ObjectMapper mapper = new ObjectMapper();
ObjectNode nodes = mapper.readValue(new File("D:\\test.txt"), 
ObjectNode.class);
nodes.with("addressDetails").put("pinCode", "414141");
mapper.writer().writeValue(new File("D:\\test.txt"), nodes);

答案 1 :(得分:0)

您的代码的问题在于您将值添加到新的JsonObject(node),而不是您已经读过的那个(root)。所以基本上,你和& #39;我必须将其添加到root。但是为了能够做到这一点,您必须将其强制转换为ObjectNode,因为JsonNode不提供任何方法来添加到节点。

所以,尝试以下内容:

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(new File("D://test.json"));
ObjectNode node = (ObjectNode) root;
node.with("addressDetails").put("pinCode", "414141");
mapper.writer().writeValue(new File("D:\\test.txt"), node);