Java 解析复杂的JSON结果

Java 解析复杂的JSON结果,java,json,Java,Json,我有一个json(结果),如下所示,我需要键“extra”的值,即“contact office”。 我尝试了下面的代码,但没有成功,你能帮我吗 JSONArray jsonArray = new JSONArray(result.toString().trim()); JSONObject json = jsonArray.getJSONObject(0).getJSONObject("student").getJSONArray("department").getJSONObject(0).

我有一个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"
                }
                ],
        }
        ],

}
],

}

您将
JSONArray
JSONObject
混淆了好几次,不确定我到底要更改什么,但以下操作会起作用:

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");

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


我注意到的第二件事是:
getJSONObject(“类”)
。类是一个数组而不是对象,这将不起作用。

是否要考虑使用。你可以这样做-

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

请将您的代码放在代码块中,并告诉我们什么不起作用。@Oleg,问题中已经有了代码段。什么意思是它不起作用?任何错误消息或代码有什么问题?