Android - Разбор Twitter JSON для URL изображения - PullRequest
1 голос
/ 14 февраля 2012

В настоящее время я пытаюсь добавить канал Twitter в свое приложение, и в настоящее время все работает, за исключением случаев, когда я пытаюсь получить поле URL-адреса изображения из JSON.

Вот мой код для анализа 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 . Все остальное в ленте, по-видимому, можно найти, так почему я не могу получить URL изображения?

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Ваша переменная jsonObject относится к элементу массива верхнего уровня вашего ответа, который содержит такие элементы, как in_reply_to_status_id, geo и т. Д. Свойство 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");
1 голос
/ 14 февраля 2012

Я ДОВОЛЬНО уверен, что для этого вам нужно прочитать JSON с URL-адреса, имеющего переменную 'profile_image_url'. URL twitter.com/statuses/ не имеет этой переменной, я не думаю. Это показывает, что 'profile_image_url' находится на /profile_images/. Просто сообщаю, что изменение вашего URL на это может найти его. : P

1 голос
/ 14 февраля 2012

вот причина:

[
   {
     "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» и «creation_at» выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...