2016-06-23 2 views
-1

그래서 JSON에서 다음과 같습니다 데이터를 가져올 수 없습니다 : 나는 트랙 배열 내 첫 번째 "이름"필드를 가져 오기 위해 노력하고있어JSON 배열은

"tracks":{ 
     "track":[ 
     { 
      "name":"Do I Wanna Know?", 
      "duration":"272", 
      "listeners":"711568", 
      "mbid":"f1e57531-e0df-4b3e-938f-1ae30c5b1a11", 
      "url":"http://www.last.fm/music/Arctic+Monkeys/_/Do+I+Wanna+Know%3F", 
      "streamable":{ 
       "#text":"0", 
       "fulltrack":"0" 
      }, 

.

JSONArray pjesma = jsonObject.getJSONArray("track"); 
         JSONObject imePjesme = pjesma.getJSONObject(0); 
         String pjesmaTekst = imePjesme.getString("name"); 

을하지만 그것은 단지 내가 잘못 뭐하는 거지 No value for track

가 있다는 것을 저에게 말한다 :

나는이 코드를 얻으려고?

FULL CODE :

private void getData(String country){ 
     informacije.clear(); 
     String finalUrl = urlLeft+country+urlRight; 

     JsonObjectRequest mainRequest = new JsonObjectRequest(Request.Method.GET, finalUrl, (JSONObject) null, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        JSONObject pjesmaObject = response.getJSONObject("tracks"); 
        JSONArray pjesmaArray = pjesmaObject.getJSONArray("track"); 

        for (int i = 0; i < pjesmaArray.length(); i++){ 
         JSONObject jsonObject = pjesmaArray.getJSONObject(i); 

         // ARTIST 
         JSONObject imeIzvodjaca = jsonObject.getJSONObject("artist"); 
         String izvodjacTekst = imeIzvodjaca.getString("name"); 

         // PJESMA 
         JSONArray pjesma = jsonObject.getJSONArray("track"); 
         JSONObject imePjesme = pjesma.getJSONObject(0); 
         String pjesmaTekst = imePjesme.getString("name"); 

         //SLIKA 
         JSONArray imageArray = jsonObject.getJSONArray("image"); 
         JSONObject largeImage = imageArray.getJSONObject(3); 
         String image = largeImage.getString("#text"); 

         Informacije info = new Informacije(); 
         info.setArtist(izvodjacTekst); 
         info.setTitle(pjesmaTekst); 
         info.setUrl(image); 

         informacije.add(info); 
        } 

        adapter.notifyDataSetChanged(); 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 

     AppController.getInstance().addToRequestQueue(mainRequest); 
    } 

JSON 응답

06-23 14:43:38.167 16255-16255/com.darioradecic.topmusicandartists W/System.err: org.json.JSONException: No value for track 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at org.json.JSONObject.get(JSONObject.java:389) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at org.json.JSONObject.getJSONArray(JSONObject.java:584) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.darioradecic.topmusicandartists.MainActivity$1.onResponse(MainActivity.java:63) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.darioradecic.topmusicandartists.MainActivity$1.onResponse(MainActivity.java:48) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:72) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at android.os.Handler.handleCallback(Handler.java:739) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:95) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at android.os.Looper.loop(Looper.java:211) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5389) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at java.lang.reflect.Method.invoke(Method.java:372) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 
06-23 14:43:38.170 16255-16255/com.darioradecic.topmusicandartists W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 
+0

그냥 확인 그 대상에서 "추적"! – himanshu1496

+0

전체 json 응답을 게시 할 수 있습니까 ?? 그리고 당신은 모든 요청에 ​​대해 "추적"객체를 얻었는지 확신 할 수 있습니까? 일부 응답에서는 null이 될 수 없습니까? – himanshu1496

+0

json 응답이 첫 번째 게시물에 업로드되었습니다. 다른 모든 것이 잘 작동하기 때문에 null이 될 수 있다고 생각하지 않습니다. – DaxHR

답변

0

이 시도 : 작동하지 않는 경우

JSONObject pjesma = jsonObject.getJSONObject ("tracks"); 
JSONArray imePjesme = pjesma.getJSONArray ("track"); 
String pjesmaTekst = imePjesme.getJSONObject (0).getString("name"); 

, 된 JSONObject의 VAR의 내용을 게시하시기 바랍니다

-1

해결 방안 :

미안 해요, 바보입니다! 설교는 아주 간단합니다.

대신에 :

JSONArray pjesma = jsonObject.getJSONArray("track"); 
         JSONObject imePjesme = pjesma.getJSONObject(0); 
         String pjesmaTekst = imePjesme.getString("name"); 

이 필요 한 모든 것은 :

String pjesmaTekst = jsonObject.getString("name"); 
+1

jsonObject 속성에 무엇을 지정 했어야합니다. 귀하는 귀하의 질문 내용에 대한 응답에서 모두를 오도합니다 –

0

이 시도 : 필요 먼저 다음 "트랙"값을 얻을 경우

JSONObject tracksObject = jsonObject.getJSONObject("tracks"); 
JSONArray pjesma = tracksObject.getJSONArray("track"); 
JSONObject imePjesme = pjesma.getJSONObject(0); 
String pjesmaTekst = imePjesme.getString("name");