在java中向json节点添加新的键值
我有一个JSON文件:在java中向json节点添加新的键值,java,json,Java,Json,我有一个JSON文件: { "id":1, "name":"abc", "addressDetails": { "City":"NewYork" } } 我想在节点“addressDetails”中再添加一个键值(“pinCode”:“414141”) 我尝试使用: ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(new File("D:
{
"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");
但是它没有被添加,我有什么办法可以这样做吗?你可以试试
您应该修改文件路径
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);
代码的问题在于将值添加到一个新的JsonObject(
节点
),而不是您读入的那个(根节点
)。因此,基本上,您必须将其添加到根目录中。但要做到这一点,您必须将其强制转换为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);
当然您可以写入任何文件扩展名,例如“D:\\test.log”@sForSujit yes,它在更改后给出FilenotfoundExceptionextension@Vinod您需要使用一个exists@Vinod你丢失了{mapper.writer().writeValue(新文件(“D:\\test.txt”),nodes);}@linnan嘿,酷,我的错误,我没有覆盖它。谢谢你,伙计