繁体   English   中英

从Android中的JSON对象解析JSON数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM