【问题标题】:get data from Json array in Json array Android Java从Json数组Android Java中的Json数组获取数据
【发布时间】:2015-02-02 15:21:00
【问题描述】:

您好,如何从另一个 Json 数组中的 Json 数组获取数据我已经获取到附件的数据但附件不起作用,所有代码都可以工作到附件如何从附件获取数据我需要从中获取“photo_75”

Json

"response":{  
  "count":3,
  "items":[  
     {  
        "id":3,
        "from_id":205110032,
        "owner_id":-81865402,
        "date":1417672154,
        "post_type":"post",
        "text":"jjjjASDFGHJKYTRDXCVB",
        "attachments":[  
           {  
              "type":"photo",
              "photo":{  
                 "id":330414711,
                 "album_id":-7,
                 "owner_id":205110032,
                 "photo_75":"http:\/\/cs605116.vk.me\/v605116032\/6325\/3SwTo8j4lJ0.jpg",
                 "photo_130":"http:\/\/cs605116.vk.me\/v605116032\/6326\/_OZA86FO3Nw.jpg",
                 "photo_604":"http:\/\/cs605116.vk.me\/v605116032\/6327\/AUtB59708Nw.jpg",
                 "photo_807":"http:\/\/cs605116.vk.me\/v605116032\/6328\/59oAdfz9jgI.jpg",
                 "width":538,
                 "height":807,
                 "text":"",
                 "date":1399134687,
                 "access_key":"7297eb663de2e4e6b2"
              }
           }
        ],
        "comments":{  
           "count":0
        },
        "likes":{  
           "count":0
        },
        "reposts":{  
           "count":0
        }
     },

Java

private void parseJsonFeed(JSONObject response) {
    try {
        JSONObject parent =  response.getJSONObject("response");

        JSONArray feedArray = parent.getJSONArray("items");

        for (int i = 0; i < feedArray.length(); i++) {
            JSONObject feedObj = (JSONObject) feedArray.get(i);

            FeedItem item = new FeedItem();
            item.setId(feedObj.getInt("id"));           


            item.setName(feedObj.getString("post_type"));
            item.setTimeStamp(feedObj.getString("date"));


            // Image might be null sometimes
            String image = feedObj.isNull("photo") ? null : feedObj
                    .getString("photo");
            item.setImge(image);
            item.setStatus(feedObj.getString("text"));

        All code work till there how to get data from attachments
             ***JSONObject response1 = response.getJSONObject("response");
             feedArray = parent.getJSONArray("items");***

            JSONArray feedArray1 = response1.getJSONArray("attachments");

            for (int i1 = 0; i1 < feedArray1.length(); i1++) {
                 JSONObject  feedObj1 = (JSONObject) feedArray1.get(i1);

                 FeedItem item1 = new FeedItem();

                item.setProfilePic(feedObj1.getString("photo_75"));


             }



            // url might be null sometimes
            String feedUrl = feedObj.isNull("url") ? null : feedObj
                    .getString("url");
            item.setUrl(feedUrl);

            feedItems.add(item);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

提前致谢

【问题讨论】:

  • 你需要a/获取附件jsonarray。 b/ 在此数组上循环 c/ 搜索具有 type == 'photo' 的 jsonobject d/ 获取照片 jsonobject e/ 获取您需要的 photo_75 属性。或者,从所有这些中制作一个模型,并将其放入 gson。
  • 但是如何进入附件数组
  • 我需要进入并获取,因为我没有得到值异常

标签: java android arrays json


【解决方案1】:

您正在寻找错误对象中的附件。 “附件”是项目的属性。 而不是

JSONArray feedArray1 = response1.getJSONArray("attachments");

使用

JSONArray feedArray1 = feedObj.getJSONArray("attachments");

在您的情况下 feedObj 包含项目对象。

获取照片: 删除行:

        String image = feedObj.isNull("photo") ? null : feedObj
                .getString("photo");
        item.setImge(image);

并将其更改为:

    for (int i1 = 0; i1 < feedArray1.length(); i1++) {
            JSONObject  attachment = (JSONObject) feedArray1.get(i1);
            JSONObject photo = (JSONObject) attachment.getJSONObject("photo");
            item.setImge(photo);
            item.setProfilePic(photo.getString("photo_75"));
            item.setStatus(photo.getString("text"));
         }

【讨论】:

  • 我应该删除 JSONObject response1 = response.getJSONObject("response"); feedArray = parent.getJSONArray("items");*
  • 如果你使用这些语句只是为了获取“附件”,你可以删除它们!!
  • 如果需要获取照片 75
  • 谢谢,但有时我的数据只能是文本,在这种情况下,如果我在 JSONArray feedArray1 = feedObj.getJSONArray("attachments");使用 if 语句
  • 当然,你必须在解析之前验证json响应,并且还要处理异常。
【解决方案2】:

您可以尝试 GSON,它会直接从您的 json 中为您提供一个 java 对象,而您不必手动解析它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多