Jackson - 迭代数组并操作其值

had*_*des 4 java jackson objectmapper

我有这个json文件:

{
  "gateway_name": "gateway1",
  "fields": [
    {"name":"Code", "value":""},
    {"name":"PaymentId", "value":""},
    {"name":"RefNo", "value":""}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我试图用Jackson对象映射器解析这个文件并遍历fields数组。我想要实现的是当name等于时RefNo,操纵valueto 1112,所以它会变成:

{
  "gateway_name": "gateway1",
  "fields": [
    {"name":"Code", "value":""},
    {"name":"PaymentId", "value":""},
    {"name":"RefNo", "value":"1112"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我如何检查field值并将其设置value1112

到目前为止我尝试的是:

  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"
      }
  }
Run Code Online (Sandbox Code Playgroud)

Kau*_*are 6

与名称进行比较并更新该 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");
              }
          }
      }
Run Code Online (Sandbox Code Playgroud)