2017-07-28 41 views
2

我有JSON文件:新键值为JSON节点添加在java中

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

我想添加一个键值(“PIN码”:“414141”),以节点“addressDetails”。

我试着使用:

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

但它没有得到补充,有没有什么办法可以做到这一点?

回答

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); 
+0

!你可以写任何文件扩展名,例如。 “D:\\ test.log” –

+0

@sForSujit ye​​s在改变扩展名后给出FilenotfoundException – Vinod

+0

@Vinod你需要使用一个存在的文件 –

0

与您的代码的问题是,你的价值添加到新的JSONObject(node),而不是一个(root)你已经阅读。所以基本上,你必须将它添加到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); 
当然