2017-03-07 34 views
0
{ 
    "kind": "youtube#channelListResponse", 
    "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/RcyuNr1qwNrdSKCHUL-TlYislxI\"", 
    "pageInfo": { 
    "totalResults": 1, 
    "resultsPerPage": 1 
}, 
"items": [ 
{ 
    "kind": "youtube#channel", 
    "etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/06AiodZH5j6AmLIkxRzlAs2py9c\"", 
    "id": "UCfba9cyRs4aRiKaGi11d2Ig", 
    "statistics": { 
     "viewCount": "131077848", 
     "commentCount": "8", 
     "subscriberCount": "222353", 
     "hiddenSubscriberCount": false, 
     "videoCount": "5185" 
    } 
    } 
] 
} 

這是我想解析的json。 我想解析viewCount,subscriberCount和videoCount。Android使用json解析youtube用戶

JSONObject jsonObject1 = new JSONObject(jsonStr); 
       JSONArray jsonArray1 = jsonObject1.getJSONArray("items"); 
       JSONObject jsonObject2 = jsonArray1.getJSONObject(0); 
       JSONArray jsonArray2 = jsonObject2.getJSONArray("statistics"); 
       JSONObject jsonObject3 = jsonArray2.getJSONObject(0); 

我試過這樣,但它顯示錯誤「JSONObject不能轉換爲JSONArray」。 我如何獲得「統計」內的內容?

(對不起,我英文不好)

回答

1

「統計」是一個JSONObject,而不是一個JSONArray,這就是錯誤來。

JSONObject jsonObject1 = new JSONObject(jsonStr); 
JSONArray jsonArray1 = jsonObject1.getJSONArray("items"); 
JSONObject jsonObject2 = jsonArray1.getJSONObject(0); 
JSONObject jsonObject3 = jsonObject2.getJSONObject("statistics"); 
String viewCount = jsonObject3.getString("viewCount"); 
String subscriberCount = jsonObject3.getString("subscriberCount"); 
String videoCount = jsonObject3.getString("videoCount"); 
0

統計信息不是JSON數組,而是JSON對象。

0

statistic{開頭,因此它是JSONObject而不是JSONArray。 您嘗試getJSONArray("statistic")而不是getJSONObject("statistic")

試試這個:

JSONObject jsonObject1 = new JSONObject(json); 
JSONArray jsonArray1 = jsonObject1.getJSONArray("items"); 
JSONObject jsonObject2 = jsonArray1.getJSONObject(0); 
JSONObject jsonObject3 = jsonObject2.getJSONObject("statistics"); 

,並讀取數值,例如用於commentCount

int commentCount = jsonObject3.getInt("commentCount");