json解析


1,json要解析的文件

{"data":[{"name":"sam","age":18},{"name":"leo","age":19},{"name":"sky","age":20}]}; 

将该文件可放在raw中文件名是以json 结尾

2,在MainActivity中进行解析

3,新建一个类,用于存放解析后的数据

package com.example.pulljiexi;



import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;


import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;


import android.R.xml;
import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.util.JsonReader;
import android.util.Xml;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;


public class MainActivity extends Activity {
private Button btn_jiexi;
ArrayList<Person> list=new ArrayList<Person>();


Person person=new Person();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
// getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,WindowManager.LayoutParams. FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
btn_jiexi=(Button) findViewById(R.id.btn_jiexi);
btn_jiexi.setOnClickListener(new OnClickListener() {
    
@Override
public void onClick(View v) {
ArrayList<Person3> list=jiexi();
System.out.println("总共有几个"+list.size());
for(int i=0;i<list.size();i++)
{System.out.println("meitiao"+list.get(i));}

}
});
           
}


private ArrayList<Person3>  jiexi() {
// TODO Auto-generated method stub
// String data="{\"data\":[{\"name\":\"sam\",\"age\":\18},{\"name\":\"leo\",\"age\":19},{\"name\":\"sky\", \"age\":\20}]}"; //json3 json array中有object</code>
      //JsonReader reader=new JsonReader(new StringReader(data));
// json2 一个数字数组
Reader r=new InputStreamReader(getResources().openRawResource(R.raw.peson));
JsonReader reader=new JsonReader( r);
ArrayList<Person3> list=new ArrayList<Person3>();



try {//找到要解析的文件----data文件
reader.beginObject();
if(reader.hasNext()){
if("data".equals(reader.nextName())){
//解析的是数组----开始解析数组
reader.beginArray();
// 由于数组里有多个对象
while(reader.hasNext())
{ Person3 person=new Person3();
//开始解析每一个对象
reader.beginObject();
//由于每个对象都有不同的属性
while(reader.hasNext()){
String shuxi=reader.nextName();
//如果某个属性是name,则保存在person的name中
if("name".equals(shuxi))
{person.name=reader.nextString();}
//如果某个属性是age,则保存在person的age中
else if("age".equals(shuxi))
{ person.age=reader.nextInt();}

}
// 其中一个对象的属性都已完成
reader.endObject();
//添加到list中
list.add(person);

}
System.out.println("dddd");
//数组都完成
reader.endArray();

}


}
//整个对象完成
reader.endObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


return list;
}
}
/**pull解析
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// //创建pull解析器
// XmlPullParser xrp=Xml.newPullParser();
// //找到解析文件
// InputStream in=getResources().openRawResource(R.raw.jiexi);
// try {
// //设置要解析的文件流
// xrp.setInput(in,"UTF-8");
// } catch (XmlPullParserException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
//  StringBuilder sb = new StringBuilder("");  
//                int counter = 0;   
//                try {   
//                    // 判断是否到了文件的结尾   
//                    while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {   
//                        //文件的内容的起始标签开始,注意这里的起始标签是test.xml文件里面<resources>标签下面的第一个标签   
//                        if (xrp.getEventType() == XmlResourceParser.START_TAG) {   
//                            String tagname = xrp.getName();   
//                            if (tagname.endsWith("customer")) {   
//                                counter++;   
//                                sb.append("这是第" + counter + "客户"+"\n");   
//                                sb.append("姓名:"+xrp.getAttributeValue(0)+"\n");   
//                                sb.append("年龄:"+xrp.getAttributeValue(1)+"\n\n");   
//                              
//                            }   
//                        }   
//                        // 下面的两个else if什么作用呢?   
//                        else if (xrp.getEventType() == XmlResourceParser.END_TAG) {   
//                        } else if (xrp.getEventType() == XmlResourceParser.TEXT) {   
//                        }    
//                        xrp.next();   
//                    }   
//                    //程序细节注意的地方,StringBuilder要条用toString()方法,不要粗心忘记了   
//                  System.out.println(sb.toString());
//                } catch (XmlPullParserException e) {   
//  
//                } catch (IOException e) {   
//                    e.printStackTrace();   
//                }   
//            }   
//       
//
// });
// }




*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值