无法使用Java Jackson来更新JSON文件 [英] Not able to java update json file using java jackson
本文介绍了无法使用Java Jackson来更新JSON文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
json文件为:
{
"id": 1,
"name": "TC1",
"steps": [
{
"stepId": 1,
"action": "open",
"object": "chrome",
"input": "https://www.google.com/",
}
]
}
而Java代码是:
public static void updateTestCaseValue(String tabTCPath) {
ObjectMapper objectMapper = new ObjectMapper();
File jsonFile = new File(tabTCPath);
try {
JsonNode arrNode = objectMapper.readTree(jsonFile).get("steps");
if (arrNode.isArray()) {
for (final JsonNode objNode : arrNode) {
if(objNode.findPath("stepId").asText().equals("1")) {
((ObjectNode) objNode).put("object", "Firefox");
}
objectMapper.writerWithDefaultPrettyPrinter().writeValue(new File(tabTCPath), arrNode);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
输出为:
[ {
"stepId" : 1,
"action" : "openBrowser1",
"object" : "Firefox",
"input" : "https://www.google.com/",
"output" : "",
"description" : "Open browser"
}]
但下面的部分未写入文件
but below part is not written to file
"id": 1,
"name": "TC1",
推荐答案
您丢失了对根JsonNode
的引用.您需要保留对根节点的引用.另外,在for-each
循环之后写结果:
You lost reference to root JsonNode
. You need to keep reference to root node. Also, write the result after for-each
loop:
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(json);
JsonNode steps = root.get("steps");
if (steps.isArray()) {
for (final JsonNode item : steps) {
if (item.findPath("stepId").asText().equals("1")) {
((ObjectNode) item).put("object", "Firefox");
}
}
String resultJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(root);
System.out.println(resultJson);
}
这篇关于无法使用Java Jackson来更新JSON文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文