首页 > 解决方案 > 根据所选数字从 JSON 数组列表中获取数据

问题描述

我想处理一个来自另一个对象的数组列表,但我希望它只创建一个新的 JSON 数组,其中包含学生编号(应该与 lStudentZelf 相同)和 aanwezigheid。

{
    "klas": "V1A",
    "docent": "Buddha",
    "les": "AUI",
    "studenten": [{
            "studentnummer": 12312591,
            "status": "afwezig"
        },
        {
            "studentnummer": 1214531,
            "status": "aanwezig"
        },
        {
            "studentnummer": 1214531,
            "status": "aanwezig"
        }
    ]
}

(这就是 arraylist 的样子,我希望它只输出 studentnumber 1214531 的结果,并跟踪这个 studentnumber 有多少次处于 aanwezig 状态。)

我已经尝试了下面的代码,并尝试以其他几种方式解析它但无济于事。

private void ophalen(Conversation conversation) {
    JsonObject lJsonObjectIn = (JsonObject) conversation.getRequestBodyAsJSON();
    String lGebruikersnaam = lJsonObjectIn.getString("username");
    Student lStudentZelf = informatieSysteem.getStudent(lGebruikersnaam);
    int lNummerZelf = lStudentZelf.getStudentNummer(); //lNummerZelf will be the number that needs to be the same as the 'studentennummer' in the list.
    ArrayList<Statistiek> Test2 = Statistiek.getStatistieken();

    JsonArrayBuilder lJsonArrayBuilder = Json.createArrayBuilder();

    for (Statistiek s : Test2) {
    JsonObjectBuilder lJsonObjectBuilder= Json.createObjectBuilder();
    lJsonObjectBuilder.add("aanwezig", aanwezig);
    lJsonObjectBuilder.add("afwezig", afwezig);
    lJsonObjectBuilder.add("geoorloofd", gafwezig);
    lJsonObjectBuilder.add("vak", vak);
    lJsonArrayBuilder.add(lJsonObjectBuilder);
    }
    String lJsonOutStr = lJsonArrayBuilder.build().toString();
    conversation.sendJSONMessage(lJsonOutStr);
}

}

最后,我希望它只读取 studentnummer 和 status 部分,并跟踪属于所选 studentnummer 的特定状态出现了多少次(例如 studentnummer 1214531 的 aanwezig 2x)。

标签: javaarraysjson

解决方案


推荐阅读