2016-10-04 19 views
1

jsonデータ(YouTube V3 API)から値を取得しようとしています。JSONデータから値を取得できません - YouTube API -

String jsonText = readFromUrl(channerUrl);// channerUrl = Youtube V3 API Link 

JSONObject json = new JSONObject(jsonText); 

System.out.println(json.getString("videoId")); 

しかし、私は私のログでこれを持っている:

I/System.out: org.json.JSONException: No value for videoId 

のYouTubeからのデータです:

{ 
"kind": "youtube#playlistItemListResponse", 
"etag": "\"xxxx"", 
"nextPageToken": "xxx", 
"pageInfo": { 
    "totalResults": 321, 
    "resultsPerPage": 1 
}, 
    "items": [ 
     { 
     "kind": "youtube#playlistItem", 
     "etag": "\"xxxx"", 
     "id": "xxxx", 
     "contentDetails": { 
     "videoId": "The Value Want" 
     } 
     } 
    ] 
} 

私はNo value for videoIdを持っているのはなぜ? はあなた

EDIT(あまりにも動作しませんでした)ありがとう:(jsonText)をvideoIditemsオブジェクトの下にあるのでJSONデータ

JSONObject json = new JSONObject(jsonText); 


     List<String> list = new ArrayList<String>(); 
     JSONArray array = json.getJSONArray("items"); 
     for(int i = 0 ; i < array.length() ; i++){ 
      list.add(array.getJSONObject(i).getString("contentDetails")); 
      System.out.println(json.getString("contentDetails")); 
     } 

答えて

0

のリンクです。ただvideoId

を含むリストを印刷

array.getJSONObject(i).getJSONObject("contentDetails").getString("videoId") 

を使用し、ループの外側その後printlnライン

を削除: 最初itemは、そのfirst childはその後videoId

編集をFETゲット

+0

これで 'videoID'は' content'の 'contentDetails'にありますか?どのように 'item'を最初に得ることができますか? – PotatoesPower

+0

getObjectメソッドとgetArrayメソッドを見つけて使用する –

+0

私は最初の投稿を編集しましたが、getArrayメソッドで試してみましたが、それも機能しませんでした – PotatoesPower

0

このコードを使用:

JSONObject json = new JSONObject(jsonText); 


      List<String> list = new ArrayList<String>(); 
      JSONArray array = null; 
      try { 
       array = json.getJSONArray("items"); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      for(int i = 0 ; i < array.length() ; i++){ 
       // list.add(array.getJSONObject(i).getString("contentDetails")); 
       try { 
        System.out.println(array.getJSONObject(i).getJSONObject("contentDetails").getString("videoId")); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
関連する問題