2011-07-22 65 views
1

我正在尝试制作一个小应用程序(图像库来自Web的图像,是我从我收到的JSON文件获取的网址)。 JSON的背景下看起来像这样:Android中的JSON问题(对象消失)

{"images":{ 
    "yXVak":{ 
     "image_hash":"yXVak", 
      "imgur_page":"http:\/\/imgur.com\/yXVak", 
      "original_image":"http:\/\/imgur.com\/yXVak.gif", 
      "large_thumbnail":"http:\/\/imgur.com\/yXVakl.gif", 
      "small_thumbnail":"http:\/\/imgur.com\/yXVaks.gif", 
       "message":"I didn't know they made you see THAT well.", 
       "source":" ", 
        "date_popular":"2011-07-18 18:45:05"}, 

..... 我有大约30多个对象,看起来像“yXVak”。

现在,问题是,当我试图解析文本时,程序找不到对象“yXVak”,异常看起来像这样:org.json.JSONException:JSONObject [“yXVak”]未找到。 我解析JSON文件那样:

jObject = new JSONObject(jString); 
        JSONObject jImages = jObject.getJSONObject("images"); 
        getImages(jImages); 

getImages功能看起来像这样:

JSONObject jHash = jImages.getJSONObject("yXVak") ; 
      String hash = jHash.getString("yXVak"); 
      String page = jHash.getString("http:\\/\\/imgur.com\\/yXVak"); 
      Image[] images = new Image[3]; 
      images[0] = new Image(jHash.getString("original_image"), jHash.getString("http:\\/\\/imgur.com\\/yXVak.gif")); 
      images[1] = new Image(jHash.getString("large_thumbnail"), jHash.getString("http:\\/\\/imgur.com\\/yXVakl.gif")); 
      images[2] = new Image(jHash.getString("small_thumbnail"), jHash.getString("http:\\/\\/imgur.com\\/yXVaks.gif")); 
      String message = jHash.getString("I didn't know they made you see THAT well."); 
      String source = jHash.getString(" "); 
      String date = jHash.getString("2011-07-18 18:45:05"); 
      listOfImages.add(new ImageHash(hash, page, images, message, source, date)); 

...

通过调试我发现的jstring对象向右看(整个字符串在文件中),但jImages对象缺少两个第一个对象(“yXVak”,第二个我没有在这里显示“6k9yE”)。 有人可以帮我,请问我做错了什么?

回答

3

我的事情,你应该改变这种线在你getImages功能: -

JSONObject jHash = jImages.getJSONObject("yXVak"); 
//Changes in this lines. 
String hash = jHash.getString("image_hash"); 
String page = jHash.getString("imgur_page"); 
// Rest of your code is same. 

请试试这个out.I认为,这将解决您的问题,

+0

感谢的人,我不相信我做了这个愚蠢的错误,但我有一个问题:有没有什么方法可以重用此代码(除了用所有的getString()函数编写函数),我的意思是以某种方式遍历所有的JSONObject,通过循环或其他? – user854787

+0

嗨@ user854787,欢迎来到StackOverFlow.I没有很好地解决你的问题。但是我告诉你,如果你的响应包含多个JSONObject'yXVak',那么你可以通过循环。否则你坚持使用getString()。 –