2017-08-06 128 views
-2

我有一個JSON(結果)像下面,我需要的關鍵「額外」,即「聯繫辦公室」的價值。 我嘗試了下面的代碼,但它沒有用,你能幫忙嗎?解析一個複雜的JSON結果

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" 
       } 
       ], 
     } 
     ], 

} 
], 

}

+0

請將您的代碼放在代碼塊中,告訴我們什麼都行不通。 – Oleg

+0

@Oleg,代碼段已經存在了。 – djac

+0

什麼意思*但它沒有工作*?任何錯誤消息或您的代碼有什麼問題?它的工作原理是 – Jens

回答

1

你混了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"); 
+0

。謝謝。 – djac

0

這是一個完整的樣本?如果是這樣,它不會作爲一個數組開始。學生是和對象不是一個數組。如果它只是陣列中的一個項目的樣本,那麼你沒關係。

我注意到的第二件事是:getJSONObject("classes")。類是一個數組而不是對象,這是行不通的。

0

你想不想使用JsonPath。你可以做這樣的事情 -

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