我有这个 json 文件:
{
"gateway_name": "gateway1",
"fields": [
{"name":"Code", "value":""},
{"name":"PaymentId", "value":""},
{"name":"RefNo", "value":""}
]
}
我尝试用 Jackson
解析此文件对象映射器并迭代 fields
大批。我想要实现的是当 name
等于RefNo
,操纵value
至1112
,所以它会变成:
{
"gateway_name": "gateway1",
"fields": [
{"name":"Code", "value":""},
{"name":"PaymentId", "value":""},
{"name":"RefNo", "value":"1112"}
]
}
如何查看 field
值并设置 value
至1112
?
到目前为止我尝试过的是:
Resource resource = new ClassPathResource("gateway-fields.json"); //read from json file
JsonFactory jsonFactory = new JsonFactory();
ObjectMapper objectMapper = new ObjectMapper(jsonFactory);
JsonNode arrayNode = objectMapper.readTree(resource.getFile()).get("fields");
if (arrayNode.isArray()) {
for (JsonNode jsonNode : arrayNode) {
JsonNode nameFieldNode = jsonNode.get("name");
JsonNode valueFieldNode = jsonNode.get("value");
//Stcuked here
IF nameFieldNode is "RefNo"
THEN SET valueFieldNode to "1112"
}
}
最佳答案
与 name 进行比较并更新该 json 元素。
Resource resource = new ClassPathResource("gateway-fields.json"); //read from json file
JsonFactory jsonFactory = new JsonFactory();
ObjectMapper objectMapper = new ObjectMapper(jsonFactory);
JsonNode arrayNode = objectMapper.readTree(resource.getFile()).get("fields");
if (arrayNode.isArray()) {
for (JsonNode jsonNode : arrayNode) {
String nameFieldNode = jsonNode.get("name").asText();
if("RefNo".equals(nameFieldNode)){
((ObjectNode)jsonNode).put("name", "1112");
}
}
}
关于java - Jackson - 迭代数组并操纵其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51835505/