无法使用Java Jackson来更新JSON文件 [英] Not able to java update json file using java jackson

查看:60
本文介绍了无法使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆