-1

我想解析以下 JSON 响应。我无法提取JSONArrayJSON 对象内的内容。我是 JSON 解析的新手,任何帮助将不胜感激。

{
    "Result": {
        "Data": [
            {
                "id": "1",
                "Name": "ABC",
                "release": "8",
                "cover_image": "august.png",
                "book_path": "Aug.pdf",
                "magazine_id": "1",
                "Publisher": "XYZ",
                "Language": "Astrological Magazine",
                "Country": "XYZ"
            },
            {
                "id": "2",
                "Name": "CDE",
                "release": "8",
                "cover_image": "august2012.png",
                "book_path": "aug.pdf",
                "magazine_id": "2",
                "Publisher": "XYZ",
                "Language": "Astrological Magizine",
                "Country": "XYZ"
            }
        ]
    }
}
4

3 回答 3

1

实现 JSON 解析的基本代码如下:

JsonObject objJSON = new JSONObject("YourJSONString");

JSONObject objMain = objJSON.getJSONObject("NameOfTheObject");
JSONArray objArray = objMain.getJSONArray("NameOfTheArray");  // Fetching array from the object

更新:

根据您的评论,我可以看到您没有获取 JSONArray“数据”,没有它,您正在尝试获取特定对象的值/属性:

JSONObject jObj = jsonObj.getJSONfromURL(category_url); 
JSONObject menuObject = jObj.getJSONObject("Result"); String attributeId = menuObject.getString("Data");

String attributeId = menuObject.getString("Data");   // Wrong code

JSONArray objArray = menuObject.getJSONArray("Data"); // Right code
于 2012-10-12T13:33:13.603 回答
0

我喜欢使用 GSON 库:http ://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

这是一个由 Google 提供的 JSON 解析库。

于 2012-10-12T13:42:23.787 回答
0

好的,一步一步来:

String json = "{\"Result\":{\"Data\":[{\"id\":\"1\",\"Name\":\"ABC\",\"release\":\"8\",\"cover_image\":\"august.png\",\"book_path\":\"Aug.pdf\",\"magazine_id\":\"1\",\"Publisher\":\"XYZ\",\"Language\":\"Astrological Magazine\",\"Country\":\"XYZ\"},{\"id\":\"2\",\"Name\":\"CDE\",\"release\":\"8\",\"cover_image\":\"august2012.png\",\"book_path\":\"aug.pdf\",\"magazine_id\":\"2\",\"Publisher\":\"XYZ\",\"Language\":\"Astrological Magizine\",\"Country\":\"XYZ\"}]}}";

try
{
    JSONObject o = new JSONObject(json);
    JSONObject result = o.getJSONObject("Result");
    JSONArray data = result.getJSONArray("Data");

    for (int i = 0; i < data.length(); i++)
    {
        JSONObject entry = data.getJSONObject(i);
        String name = entry.getString("Name");
        Log.d("name key", name);
    }   
}
catch (JSONException e)
{
    e.printStackTrace();
}

Json 是硬编码的,所以我不得不逃避它。此代码获取结果对象,然后获取数据数组。循环遍历数组并获取 Name 值。

我进入了 LogCat:ABC CDE

请注意,您应该用 try-catch 包围它或将 throws 添加到方法中。

于 2012-10-12T14:32:14.590 回答