Android: Json получает внутренний объект - PullRequest
1 голос
/ 17 августа 2011

Я пытаюсь получить внутренний объект массива json (мой жаргон может быть неправильным), который выглядит следующим образом:

{
"News": {
    "0": {
        "name": "nytimes",
        "fullName": "The New York Times",
        "text": "@OwenPerry We heard from the owner of the house and corrected the article http://t.co/8GEgGy7",
        "timestamp": "2011-08-15 12:20:36"
    },
    "1": {
        "name": "HuffingtonPost",
        "fullName": "Huffington Post",
        "text": "Look out! New Zealand Skier chased by angry bulls - http://t.co/L0PZkx4",
        "timestamp": "2011-08-15 12:19:04"
    }
}
}

Мой код для извлечения внутренних объектов выглядит следующим образом:

        JSONArray category = json.getJSONArray("News");
        JSONArray innerobj = category.getJSONArray(0);
        for (int i = 0; i < innerobj.length(); i++) {
            HashMap<String, String> map = new HashMap<String, String>();
            JSONObject c = innerobj.getJSONObject(i);

            map.put("id", String.valueOf(i));
            map.put("name", c.getString("fullName") + "\n(#"
                    + c.getString("name") + ") ");
            map.put("text",
                    c.getString("text") + "\n - "
                            + c.getString("timestamp"));
            mylist.add(map);
        }

Есть идеи о том, что я делаю неправильно?

1 Ответ

3 голосов
/ 17 августа 2011

У вас нет JSONArray, но JSONObjects. Ваша JSONObject структура:

  1. Main JSONObject, который содержит 1 JSONObject - «новости»
  2. «news» содержит два JSONObjects, «0» и «1»
  3. Каждый из этих объектов имеет четыре поля - «имя», «полное имя», «текст» и «отметка времени»

Рассмотрим:

JSONObject jobj = new JSONObject(yourString);
JSONObject newsobj = jobj.getJSONObject("news");
JSONObject firstOne = newsobj.getJSONObject("0"); // this is the object "0"
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...