[英]Parsing json array from the JSON object in Android
我正在尝试从服务器接收的字符串中解析JSON数组。
数组的示例是
{"data":[{"id":703,"status":0,"number":"123456","name":"Art"}]}
我正在尝试使用下面的代码来解析它,该代码给了我Classcast Exception,该异常显示JSonArray无法转换为List
JSONObject o = new JSONObject(result.toString());
JSONArray slideContent = (JSONArray) o.get("data");
Iterator i = ((List<NameValuePair>) slideContent).iterator();
while (i.hasNext()) {
JSONObject slide = (JSONObject) i.next();
int title = (Integer)slide.get("id");
String Status = (String)slide.get("status");
String name = (String)slide.get("name");
String number = (String)slide.get("number");
Log.v("ONMESSAGE", title + " " + Status + " " + name + " " + number);
// System.out.println(title);
}
解析它的正确方法应该是什么?
这很有意义,因为JSONArray
无法JSONArray
转换为List<>
,也没有迭代器。 JSONArray具有一个length()
属性,该属性返回其长度,并具有几个get(int index)
方法,这些方法使您可以检索该位置的元素。
因此,考虑到所有这些,您可能希望编写如下内容:
JSONObject o = new JSONObject(result.toString());
JSONArray slideContent = o.getJSONArray("data");
for(int i = 0 ; i < slideContent.length() ; i++) {
int title = slideContent.getInt("id");
String Status = slideContent.getString("status");
// Get your other values here
}
您应该这样做:
JSONObject o = new JSONObject(result.toString());
JSONArray array = jsonObject.getJSONArray("data");
JSONObject jtemp ;
ArrayList<MData/*a sample class to store data details*/> dataArray= new ArrayList<MData>();
MData mData;
for(int i=0;i<array.length();i++)
{
mData = new MData();
jtemp = array.getJSONObject(i); //get i record of your array
//do some thing with this like
String id = jtemp.getString("id");
mData.setId(Integer.parseInt(id));
///and other details
dataArray.put(mData);
}
和MData.class
class MData{
private int id;
/....
public void setId(int id){
this.id = id;
}
//.....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.