有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析复杂的JSON结果

我有一个json(结果),如下所示,我需要键“extra”的值,即“contact office”。 我尝试了下面的代码,但没有成功,你能帮我吗

JSONArray jsonArray = new JSONArray(result.toString().trim());
JSONObject json = jsonArray.getJSONObject(0).getJSONObject("student").getJSONArray("department").getJSONObject(0).getJSONObject("classes");
String val=json.getString("extra");

//JSON示例

{

"student": [

{
    "department" : [

        {
            "classes" : [

                {

                "grade" : "A",
                "fine"  : "No"
                },
                {

                "grade" : "B",
                "fine"  : "Yes",
                "extra" : "contact office"
                },
                {

                "grade" : "C",
                "fine"  : "NA"
                }
                ],
        }
        ],

}
],

}


共 (3) 个答案

  1. # 1 楼答案

    这是完整的样品吗?如果是这样的话,它不会以数组的形式开始。Student是对象,而不是数组。如果它只是数组中一个项目的样本,那么您就可以了

    我注意到的第二件事是:getJSONObject("classes")。类是数组而不是对象,这不起作用

  2. # 2 楼答案

    你把JSONArrayJSONObject搞混了好几次,不确定我到底要改变什么,但下面的方法可以奏效:

    JSONObject jsonObject = new JSONObject(result.toString().trim());
    JSONArray jsonArray = jsonObject
            .getJSONArray("student").getJSONObject(0).getJSONArray("department").getJSONObject(0)
            .getJSONArray("classes");
    String val = jsonArray.getJSONObject(1).getString("extra");
    
  3. # 3 楼答案

    你想考虑使用JsonPath吗?你可以这样做-

    String[] extraValues = JsonPath.read(json, "$.student[0].department[0].classes[*].extra");