2014-02-20 3 views
0

В этом вопросе есть вопрос о satckoverflow, но я не нашел успеха у них. Итак, вот мой случай. Я читал некоторые фотографии из Facebookorg.json.JSONException no value data

https://graph.facebook.com/170665393122726?fields=name,photos.fields(source)

эта ссылка имеет нумерацию страниц в ней так я получаю 25 изображение на странице так на первой странице я получить 25 снимков для следующего 25 я перейти к следующему URL-адресу, но когда я принести следующая страница это дает мне org.json.JSONException.

Вот мой код

arraylist = new ArrayList<String>(); 
      boolean firsttime = true; 
      JSONArray jsonArrayPhotos; 

      try 
      { 
       JSONServiceHandler _json_parser= new JSONServiceHandler(); 
       jsonobject = _json_parser.getJSONFromUrl(url); 

      while(url != null) 
      { 
       if(jsonobject != null) 
       { 

        if(firsttime) 
        { 
         jsonobject = jsonobject.getJSONObject("photos"); 
         jsonArrayPhotos = jsonobject.getJSONArray(TAG_DATA); 
         firsttime = false; 
        } 
        else 
        { 
         jsonArrayPhotos = jsonobject.getJSONArray("TAG_DATA"); 
        } 

        for (int i = 0; i < jsonArrayPhotos.length(); i++) 
        { 
         ArrayList<String> map = new ArrayList<String>(); 
         JSONObject jObject = jsonArrayPhotos.getJSONObject(i); 

         String source = jObject.getString(TAG_IMAGE_SOURCE); 
         map.add(source); 
         arraylist.addAll(map); 
        } 

        //next url 
        JSONObject jsonpag = jsonobject.getJSONObject("paging"); 
        url = jsonpag.getString("next"); 

        jsonobject = _json_parser.getJSONFromUrl(url); 


       } 
       else 
       { 
        return null; 
       } 
      }//end of while 

      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
       /*exceptionToBeThrown=e; 
       return "null";*/ 
      } 

Помогите пожалуйста.

Вход

02-20 02:54:25.401: W/System.err(358): org.json.JSONException: No value for TAG_DATA 
02-20 02:54:25.401: W/System.err(358): at org.json.JSONObject.get(JSONObject.java:354) 
02-20 02:54:25.401: W/System.err(358): at org.json.JSONObject.getJSONArray(JSONObject.java:544) 
02-20 02:54:25.401: W/System.err(358): at com.app_desk.hairstyle.main.Category$DownloadJSON.doInBackground(Category.java:144) 
02-20 02:54:25.401: W/System.err(358): at com.app_desk.hairstyle.main.Category$DownloadJSON.doInBackground(Category.java:1) 
02-20 02:54:25.421: W/System.err(358): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
02-20 02:54:25.421: W/System.err(358): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
02-20 02:54:25.421: W/System.err(358): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
02-20 02:54:25.421: W/System.err(358): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
02-20 02:54:25.421: W/System.err(358): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
02-20 02:54:25.421: W/System.err(358): at java.lang.Thread.run(Thread.java:1019) 
+0

Что такое 'TAG_DATA'. если он не будет 'jsonArrayPhotos = jsonobject.getJSONArray (TAG_DATA);' without '" "' – Raghunandan

+0

TAG_DATA = "data" – umerk44

+0

Опубликовать stacktrace full – Raghunandan

ответ

1
{ 
    "name": "Men-Spikes", 
    "photos": { 
     "data": [ // data is json array 

Изменить

jsonobject.getJSONArray("TAG_DATA"); // 

Для

jsonobject.getJSONArray(TAG_DATA); 

Его TAG_DATA= data но не "TAG_DATA" сам

+0

oh no what a ужасная ошибка – umerk44

+0

Я догадался, что это долгое время назад и даже прокомментировал, но я хотел быть уверен, прежде чем отправлять ответ. в любом случае, если это поможет принять ответ, нажав на галочку рядом с анвью – Raghunandan