JSON解析图片出来了空白的android

时间:2013-12-04 02:19:14

标签: android json android-intent

您好我查看了所有的stackoverflow并尝试了一些解决方案,但我仍然无法解决我的问题。我对json解析和android仍然相当新,任何帮助都将非常感激。

这是我的json网址 - http://vina.harvestcamasu.com/vina/xml/image.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

1 个答案:

答案 0 :(得分:0)

因为Image JSONArray位于Artist JSONObject内且艺术家位于Gallery JSONObject内,所以您应该遵循相同的层次结构从Image JSONArray中提取JSONObject以检索所有值:

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
  }