【问题标题】:Android - Parsing Twitter JSON for image urlAndroid - 为图像 URL 解析 Twitter JSON
【发布时间】:2012-03-05 10:06:19
【问题描述】:

我目前正在尝试将 twitter 提要放入我的应用程序中,目前一切正常,除非我尝试从返回的 JSON 中获取图像 url 字段。

这是我解析 JSON 的代码:

      public ArrayList<Tweet> getTweets() {
      String searchUrl =
          "http://twitter.com/statuses/user_timeline/vogella.json";

      ArrayList<Tweet> tweets =
            new ArrayList<Tweet>();

      HttpClient client = new  DefaultHttpClient();
      HttpGet get = new HttpGet(searchUrl);

      ResponseHandler<String> responseHandler =
            new BasicResponseHandler();

      String responseBody = null;
      try {
        responseBody = client.execute(get, responseHandler);
      } catch(Exception ex) {
        ex.printStackTrace();
      }

      JSONObject jsonObject = null;

      Log.e("", "responseBody = " + responseBody);


    JSONArray arr = null;
    try {
        arr = new JSONArray(responseBody);
    } catch (JSONException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

      for (int i = 0; i < arr.length(); i++) {
            try {
                jsonObject = arr.getJSONObject(i);
            } catch (JSONException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            Tweet tweet = null;
            try {
                tweet = new Tweet(
                      jsonObject.getString("profile_image_url"),
                      jsonObject.getString("text"),
                      jsonObject.getString("created_at")
                );
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            tweets.add(tweet);
        }

      return tweets;
    }

这是我得到的错误:

02-14 00:19:18.672: W/System.err(809): org.json.JSONException:JSONObject["profile_image_url"] not found.

尽管存在“profile_image_url” - 点击链接查看 JSON - LINK。提要中的其他所有内容似乎都可以检索,为什么我无法获取图片网址?

【问题讨论】:

    标签: java android json parsing twitter


    【解决方案1】:

    原因如下:

    [
       {
         "user":{
              "profile_image_url":"http:\/\/a3.twimg.com\/profile_images\/1249241027    \/LarsVogel10_normal.png",
          },
          "created_at":"Mon Feb 13 22:34:09 +0000 2012",
          "text":"Fun evening at speaker dinner at #jfokus."
       },
       {
    ..
    ...
    

    profile_image_url 在“user”下面,而“text”和“created_at”在上面

    【讨论】:

      【解决方案2】:

      您的jsonObject 变量指的是响应的顶级数组元素,其中包含in_reply_to_status_idgeo 等元素。profile_image_url 属性不是该顶级数组元素中的属性,而是而是user 属性的子元素。

      [
          {
              "in_reply_to_status_id":null,
              "in_reply_to_user_id_str":null,
              ...
              "geo":null,
              "user":
                  {   
                      "profile_background_image_url":"http:\/\/a3.twimg.com\/profile_background_images\/112136794\/twilk_background_4c1620bca9ed3.jpg",
                      ...
                  }
          },
          ...
      ]
      

      要访问profile_background_image_url,您必须大致执行以下操作:

      JSONObject userObject = jsonObject.getJSONObject ("user");
      String url = userObject.getString("profile_image_url");
      

      【讨论】:

        【解决方案3】:

        PRETTY 确定要执行此操作,您必须从具有“profile_image_url”变量的 URL 中读取 JSON。 twitter.com/statuses/ URL 没有我认为没有的变量。 This 显示“profile_image_url”位于/profile_images/。只是让您知道将您的 URL 更改为该 URL 可能能够找到它。 :P

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-22
          • 1970-01-01
          • 2016-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多