2013-12-04 2 views
-2

Привет, я просмотрел весь stackoverflow и попробовал несколько решений, и я все еще не могу решить свою проблему. Я все еще довольно новичок в разборе json и андроиде, любая помощь была бы весьма признательна.JSON parse image out out blank android

это мой url- http://vina.harvestcamasu.com/vina/xml/image.json JSON и это код, который я попытался

json = jParser.getJSONFromUrl(url); 

        JSONObject json = jParser.getJSONFromUrl(url); 

        System.out.println("json is "+json); 
        System.out.println("Length"+TAG_IMAGE 
          .length()); 

        for (int i = 0; i < json.length(); i++) { 
         try { 
          String atObj = Integer.toString(i); 
          System.out.println(atObj); 
          JSONObject jObj = json.getJSONObject(atObj); 
          System.out.println(jObj.getString("Name")); 
          System.out.println(jObj.getString("PicURL")); 
          System.out.println(jObj.getString("Caption")); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
        JSONArray iArray; 
        try { 
         iArray = json.getJSONArray(TAG_IMAGE); 
         for (int i = 0; i < iArray.length(); i++) { 
          JSONObject m = iArray.getJSONObject(i); 

          String Id  = m.getString(TAG_ID); 
          String Name  = m.getString(TAG_NAME); 
          String PicURL = m.getString(TAG_PICURL); 
          String Date  = m.getString(TAG_DATE); 
          String Caption = m.getString(TAG_CAPTION); 

          //create a new hashmap 
          HashMap<String, String> map = new HashMap<String, String>(); 

          //adding nodes into hashmap 
          map.put(TAG_ID, Id); 
          map.put(TAG_NAME, Name); 
          map.put(TAG_PICURL, PicURL); 
          map.put(TAG_DATE, Date); 
          map.put(TAG_CAPTION, Caption); 

          //adding hashlist into arraylist 
          imagelist.add(map); 
          images[i] = m.getString(TAG_PICURL); 

         } 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

        InputStream is1 = (InputStream) new URL(images[0]).getContent(); 
        d1 = Drawable.createFromStream(is1, "src name"); 
        InputStream is2 = (InputStream) new URL(images[1]).getContent(); 
        d2 = Drawable.createFromStream(is2, "src name"); 
        InputStream is3 = (InputStream) new URL(images[2]).getContent(); 
        d3 = Drawable.createFromStream(is3, "src name"); 
        InputStream is4 = (InputStream) new URL(images[3]).getContent(); 
        d4 = Drawable.createFromStream(is4, "src name"); 
        InputStream is5 = (InputStream) new URL(images[4]).getContent(); 
        d5 = Drawable.createFromStream(is5, "srcname"); 

       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       return json; 

      } 

и журнал постоянно возвращается ошибку

12-04 10:12:02.892: W/System.err(28210): org.json.JSONException: No value for 0 
    12-04 10:12:02.892: W/System.err(28210): at     
    org.json.JSONObject.get(JSONObject.java:354) 
    12-04 10:12:02.892: W/System.err(28210): at   
    org.json.JSONObject.getJSONObject(JSONObject.java:569) 
    12-04 10:12:02.892: W/System.err(28210): at   
    vinajson.img.MainActivity$1.doInBackground(MainActivity.java:82) 
    12-04 10:12:02.892: W/System.err(28210): at 
    vinajson.img.MainActivity$1.doInBackground(MainActivity.java:1) 
    12-04 10:12:02.892: W/System.err(28210): at 
    android.os.AsyncTask$2.call(AsyncTask.java:264) 
    12-04 10:12:02.892: W/System.err(28210): at 
    java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
    12-04 10:12:02.892: W/System.err(28210): at 
    java.util.concurrent.FutureTask.run(FutureTask.java:137) 
    12-04 10:12:02.900: W/System.err(28210): at 
    android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.lang.Thread.run(Thread.java:856) 
    12-04 10:12:02.900: W/System.err(28210): org.json.JSONException: No value for Image 
    12-04 10:12:02.900: W/System.err(28210): at 
    org.json.JSONObject.get(JSONObject.java:354) 
    12-04 10:12:02.900: W/System.err(28210): at 
    org.json.JSONObject.getJSONArray(JSONObject.java:544) 
    12-04 10:12:02.900: W/System.err(28210): at 
    vinajson.img.MainActivity$1.doInBackground(MainActivity.java:93) 
    12-04 10:12:02.900: W/System.err(28210): at 
    vinajson.img.MainActivity$1.doInBackground(MainActivity.java:1) 
    12-04 10:12:02.900: W/System.err(28210): at 
    android.os.AsyncTask$2.call(AsyncTask.java:264) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.FutureTask.run(FutureTask.java:137) 
    12-04 10:12:02.900: W/System.err(28210): at 
    android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
    12-04 10:12:02.900: W/System.err(28210): at 
    java.lang.Thread.run(Thread.java:856) 
    12-04 10:12:02.900: W/System.err(28210): java.net.MalformedURLException 

ответ

0

Поскольку Image JSONArray находится внутри Artist JSONObject и художник внутри Gallery JSONObject, поэтому вы должны следовать той же иерархии, чтобы извлечь JSONObject из Image JSONArray, чтобы получить все значения как:

JSONObject json = jParser.getJSONFromUrl(url); 

// get Gallery JSONObject 
JSONObject json_gallery=json.getJSONObject("Gallery"); 
// get Artist JSONObject 
JSONObject json_artist=json_gallery.getJSONObject("Artist"); 

// now get Image JSONArray of JSONObject from json_artist 

iArray = json_artist.getJSONArray(TAG_IMAGE); 
for (int i = 0; i < iArray.length(); i++) { 
    // your code here for retrieving values 
    } 
+0

wow thanks Я не знал об этом, позвольте мне попробовать это сейчас и посмотреть, работает ли он. Миллион спасибо за руководство – Silverchain