簡體   English   中英

使用Java根據條件從json數組中刪除對象

[英]remove object from json array based on condition using java

在我的應用程序中,我得到如下Json數組形式的輸出

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

從這個數組中,我想根據應用的條件刪除整個對象。

假設主體為“生物學”,則刪除整個對象並返回:

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

如何使用Java編程實現這一目標。

如果您有課程(我在這里假設是學生),則可以使用序列化/反序列化庫(如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;
}

此處下載json-simple庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM