java - Jackson - 迭代数组并操纵其值

标签 java jackson objectmapper

我有这个 json 文件:

{
  "gateway_name": "gateway1",
  "fields": [
    {"name":"Code", "value":""},
    {"name":"PaymentId", "value":""},
    {"name":"RefNo", "value":""}
  ]
}

我尝试用 Jackson 解析此文件对象映射器并迭代 fields大批。我想要实现的是当 name等于RefNo ,操纵value1112 ,所以它会变成:

{
  "gateway_name": "gateway1",
  "fields": [
    {"name":"Code", "value":""},
    {"name":"PaymentId", "value":""},
    {"name":"RefNo", "value":"1112"}
  ]
}

如何查看 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"
      }
  }

最佳答案

与 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/

相关文章:

java - Jackson JSON 反序列化列表

java - org.geolatte.geom.Point 的 Google Endpoints 转换器

ios - 我如何访问其他 Mappble 类对象的值。(Alamofire Object Mapper)

java - 在java中存储树结构

java - 如何在Java中编写一个连续检查目录中是否有文件的线程

json - org.codehaus.jackson.JsonParseException : Invalid UTF-8 middle byte 0xdf

swift - 在 Swift 中使用 <-

java - 将具有 main 方法的 Java 程序转换为 servlet

java - 如何在 java 代码中读取 View 的 android 默认属性

java - 如何在 java 中将列表 <JSONObject> 转换为 Json 字符串 (com.amazonaws.util.json.JSONObject)