我想解析以下JSON响应。我无法提取JSON对象中的JSONArray
。我是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"
}
]
}
}
答案 0 :(得分: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
答案 1 :(得分:0)
我喜欢使用GSON库:http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html
这是Google的JSON解析库。
答案 2 :(得分: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();
}
杰森是硬编码的,所以我不得不逃避它。
此代码获取结果对象,然后获取数据数组。循环遍历数组并获取Name的值。
我加入了LogCat: ABC CDE
请注意,您应该使用try-catch将其包围,或者向方法添加throws。