使用java基于条件从json数组中删除对象

时间:2015-04-02 10:03:12

标签: java arrays json

在我的应用程序中,我以Json数组的形式获得输出,如下所示

{Students: [{Name: Harry,Subject: maths,}, 
               {Name:Ryan,Subject: Biology,}, 
               {Name:James ,Subject: maths,}]}

从这个数组我想根据应用的条件删除整个对象。

让我们说如果主题是"生物学"删除整个对象并返回:

{Students: [{Name: Harry,Subject: maths,}, 
            {Name:James ,Subject: maths,}]}

如何使用java编程实现这一目标。

1 个答案:

答案 0 :(得分:0)

如果您有类(我假设学生在这里),您可以使用像Jackson这样的序列化/反序列化库来解组对象列表到像List这样的集合,然后进行简单的列表操作。假设您收到的JSON为名为students的字符串

List<Student> list = mapper.readValue(students,
TypeFactory.defaultInstance().constructCollectionType(List.class, Student.class));

这应该有用。

编辑: 由于您要求从文件中读取JSON的版本,请转到:

public JSONArray getFilteredStudents(String jsonFilePath) throws Exception {
        FileReader fileReader = new FileReader(jsonFilePath);
        JSONParser parser = new JSONParser();
        JSONObject json = (JSONObject) parser.parse(fileReader);

        JSONArray students = (JSONArray) json.get("Students");
        Iterator itr = students.iterator();
        while (itr.hasNext()) {
            JSONObject obj = (JSONObject) itr.next();
            if (obj.get("Subject").equals("Biology")) {
                itr.remove();
            }
        }

        return students;
}

here下载json-simple库。