繁体   English   中英

使用杰克逊从文件中的Json阵列中删除对象

[英]Removing an object from Json Array in file using jackson

我的JSON如下所示,我需要从secondArray删除第一个对象。

{
   "firstArray":[
      {
         "data1":1,
         "data2":"DATA"
      },
      {
         "data1":2,
         "data2":"DATA2"
      }
   ],
   "secondArray":[
      {
         "number":1,
         "data":"DATA3",

      },
      {
         "number":2,
         "data":"DATA4"
      }
   ]
}

这是我到目前为止的内容:

public boolean remove(SecondArray object) {
 try {
  ObjectNode root = (ObjectNode) mapper.readTree(jsonFile);
  ArrayNode array = (ArrayNode) root.get("secondArray");
  if (array.path("number").asInt() == object.getId()) {
   movieArray.remove(object.getId());
  }
  System.out.println(array.toString());

 } catch (IOException e) {
  e.printStackTrace();
 }
}

我的问题是object.getId()以数字JSON获取id ,但是在JSON它位于“”内部。 我如何进行这项工作,以便可以删除从secondArray输入的对象?

不要通过object.id删除数组item 通过index将其删除。 您需要遍历数组,找到number = object.id JSON Object并将其删除。 例:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;

import java.io.File;

public class JsonApp {

    public static void main(String[] args) throws Exception {
        File jsonFile = new File("./resource/test.json").getAbsoluteFile();

        ObjectMapper mapper = new ObjectMapper();
        ObjectNode root = (ObjectNode) mapper.readTree(jsonFile);
        ArrayNode array = (ArrayNode) root.get("secondArray");

        int numberToRemove = 1;
        for (int i = 0; i < array.size(); i++) {
            if (array.get(i).get("number").asInt() == numberToRemove) {
                array.remove(i);
                break;
            }
        }
        System.out.println(array);
        System.out.println(root);
    }
}

上面的代码打印:

[{"number":2,"data":"DATA4"}]
{"firstArray":[{"data1":1,"data2":"DATA"},{"data1":2,"data2":"DATA2"}],"secondArray":[{"number":2,"data":"DATA4"}]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM