android中的JSON问题(对象消失)

android中的JSON问题(对象消失),android,json,Android,Json,我正在尝试制作一个小应用程序(一个来自网络图像的图像库,是我从收到的JSON文件中获得的url)。JSON的上下文如下所示: {"images":{ "yXVak":{ "image_hash":"yXVak", "imgur_page":"http:\/\/imgur.com\/yXVak", "original_image":"http:\/\/imgur.com\/yXVak.gif", "la

我正在尝试制作一个小应用程序(一个来自网络图像的图像库,是我从收到的JSON文件中获得的url)。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"},
jObject =  new JSONObject(jString);
                    JSONObject jImages =  jObject.getJSONObject("images");
                    getImages(jImages);
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));
。。。。。 我还有大约30多个看起来像“yXVak”的对象

现在,问题是,当我试图解析文本时,程序找不到对象“yXVak”,异常看起来是:org.json.JSONException:JSONObject[“yXVak”]找不到。 我这样解析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"},
jObject =  new JSONObject(jString);
                    JSONObject jImages =  jObject.getJSONObject("images");
                    getImages(jImages);
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));
getImages函数如下所示:

{"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"},
jObject =  new JSONObject(jString);
                    JSONObject jImages =  jObject.getJSONObject("images");
                    getImages(jImages);
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”)。
有人能帮我一下吗,我做错了什么

我想您应该在
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.

请试一试。我想它会解决你的问题,

谢谢,伙计,我不相信我犯了那个愚蠢的错误,但我有一个问题:有没有办法重用这段代码(除了用所有getString()编写一个函数),我的意思是通过循环或其他方式遍历所有JSONObject?嗨@user854787,欢迎来到StackOverFlow。我没有很好地理解你的问题。但是我告诉你,如果你的回答包含多个JSONObject
yXVak
,那么你可以通过循环。否则,你必须坚持使用getString()。