Как мне разобрать эту строку JSON? - PullRequest
1 голос
/ 28 октября 2011

Я работаю над приложением, в котором мне нужно разобрать ниже JSON.

Кто-нибудь может мне подсказать, как это сделать?

{
    "navigation_entries": {
        "home": {
            "children": [
                "favorites",
                "calendar",
                "offers",
                "wineries",
                "dining",
                "lodging",
                "things_to_do",
                "weather",
                "settings"
            ],
            "banner_image": "home_page_banner",
            "icon": {
                "small": "icon_home_small",
                "large": "icon_home_large"
            },
            "type": "home_page",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "link_name": "Home"
        },
        "wineries": {
            "display_name": "Wineries",
            "icon": {
                "small": "icon_wineries_small",
                "large": "icon_wineries_large"
            },
            "line_template": "wineries_list_template",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "link_name": "Wineries",
            "type": "leaf_list",
            "leaf_template": "wineries_leaf_template",
            "section": "wineries"
        },
        "dining": {
            "display_name": "Dining",
            "icon": {
                "small": "icon_dining_small",
                "large": "icon_dining_large"
            },
            "line_template": "dining_list_template",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "link_name": "Dining",
            "type": "leaf_list",
            "leaf_template": "dining_leaf_template",
            "section": "dining"
        },
        "offers_dining": {
            "display_name": "Offers => Dining",
            "list_name": "Dining",
            "line_template": "offers_dining_list_template",
            "type": "leaf_list",
            "leaf_template": "offers_dining_leaf_template",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "section": "offers_dining"
        },
        "favorites": {
            "display_name": "Favorites",
            "icon": {
                "small": "icon_favorites_small",
                "large": "icon_favorites_large"
            },
            "type": "favorites",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "link_name": "Favorites"
        },
        "offers": {
            "display_name": "Offers",
            "children": [
                "offers_wineries",
                "offers_dining",
                "offers_lodging",
                "offers_things_to_do"
            ],
            "icon": {
                "small": "icon_offers_small",
                "large": "icon_offers_large"
            },
            "type": "navigation_list",
            "forward_icon": {
                "small": "icon_right_arrow_small",
                "large": "icon_right_arrow_large"
            },
            "link_name": "Offers"
        }
    },
    "type": "navigation"
}

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Вы можете использовать этот веб-сайт , чтобы проще отформатировать строку JSON для ее просмотра. Android предоставляет подходящую библиотеку, чтобы делать то, что вы хотите.

Эта - страница справочного руководства, необходимая для понимания того, как использовать Android JSON API.

И здесь вы можете посмотреть учебник, чтобы понять, как анализировать строку JSON.

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

Если приведенный выше пример является вашей строкой, вы можете проанализировать ее, передав ее конструктору JSONObject:

String jsonString = "...."; // the above string
try {
    JSONObject obj = new JSONObject(jsonString);
} catch (JSONException e) {
    // This exception is thrown if jsonString is not correctly formatted
}

Теперь, если вы хотите получить «GlossList» с меткой JSONObject, внутри строки выше, вы можете сделать это:

JSONObject glossList = obj.getJSONObject("glossary").getJSONObject("GlossDiv").getJSONObject("GlossList");

Существует также другая возможность: вы также можете получить JSONArray. В нашем примере массив GlossSeeAlso:

JSONArray glossSee = glossList.getJSONObject("GlossEntry").getJSONObject("GlossDef").getJSONArray("GlossSeeAlso");

Чтобы получить непосредственно значение этого массива, вы можете использовать метод getString(int i); если в качестве массива используется JSONObject, вы можете использовать метод getJSONObject(int i). Вы также можете использовать метод getString(String lable) для непосредственного получения строки в JSONObject:

String title = glossDive.getString("title");
String firstElement = glossSee.getString(0);

Другие примеры доступны на официальном сайте JSON .

0 голосов
/ 28 октября 2011

jsonlint.com имеет очень хороший форматер json.это должно сделать ваш текст легко понятным.

для анализа этих данных, вы можете использовать JSONObject (org.json.JSONObject)

0 голосов
/ 28 октября 2011

Вы можете использовать JSONObject и JSONTokener следующим образом:

String json = "{"
     + "  \"query\": \"Pizza\", "
     + "  \"locations\": [ 94043, 90210 ] "
     + "}";

JSONObject object = (JSONObject) new JSONTokener(json).nextValue();
String query = object.getString("query");
JSONArray locations = object.getJSONArray("locations");
...