java json不能使用,无法使用Java Jackson Java更新json文件

json File is :

{

"id": 1,

"name": "TC1",

"steps": [

{

"stepId": 1,

"action": "open",

"object": "chrome",

"input": "https://www.google.com/",

}

]

}

and java code is :

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();

}

}

And output is:

[ {

"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",

解决方案

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值