您的位置:首页 > 移动开发 > Android开发

Java中数据解析之_JSON(Android官方内置解析器)

2015-08-21 18:54 483 查看
对JSON,我们有如下的两个类:A:对象JSONObject|---构造方法|---JSONObject(Stringsource);把一个String类型的字符串转成JSON对象|---JSONObject(Mapmap);把一个Map集合转成JSON对象|---JSONObject(Objectobj)把obj转成JSON对象|---get(Stringkey)根据键取到值|---getInt(Stringkey)根据键取到Int类型的值|---getString(Stringkey)根据键取到String类型的值|---getDouble(Stringkey)根据键取到Double类型的值|---getJSONObject(Stringkey)得到JSON里面的对象B:数组JSONArray|---构造方法|---JSONArray(Collectioncollection)把一个集合转成JSON数组|---JSONArray(Stringsource)把一个字符串转成JSON数组---这个字符串一定要可转|---getJSONObject(intindex)得到JSON数组下标为index的JSON对象首先,我们对JSONObject进行分析,通过其构造方法,我们可以将一个字符串,Map对象和Object对象转成JSON对象然后通过上面介绍的几个方法对数据进行解析处理:
packagecom.ctgu.classing;
importjava.util.HashMap;
importjava.util.Map;
importorg.json.JSONObject;
publicclassTestJSON{
	publicstaticvoidmain(String[]args){
		Stringstr="{'name':'Bill','age':25}";
		Stringstr1="{people:{'name':'Bill','age':25}}";
		Map<String,Integer>map=newHashMap<>();
		map.put("zhangsan",35);
		try{
//对字符串进行解析(一)
			JSONObjectobj=newJSONObject(str);
			System.out.print(obj.getString("name")+"");
System.out.println(obj.getString("age"));
System.out.println("-----------我是华丽丽的分割线-----------");
//对字符串进行解析(二)
			JSONObjectobj2=newJSONObject(str1);
			JSONObjecto=obj2.getJSONObject("people");
			System.out.print(o.getString("name")+"");
System.out.println(o.getString("age"));
System.out.println("-----------我是华丽丽的分割线-----------");
//对Map进行解析
			JSONObjectobj1=newJSONObject(map);
System.out.println(obj1.toString());
System.out.println("-----------我是华丽丽的分割线-----------");
//对对象进行解析
			Peoplep=newPeople("张三",35);
			JSONObjectobject=newJSONObject(p);///使用JAVA反射原理{"stu":{}}
System.out.println(object);
}catch(Exceptione){
e.printStackTrace();
}
}
}
下面是People类,比较简单!
packagecom.ctgu.classing;
publicclassPeople{
	privateStringname;
	privateintage;
	publicPeople(){
		//TODOAuto-generatedconstructorstub
}
@Override
	publicStringtoString(){
		return"People[name="+name+",age="+age+"]";
}
	publicStringgetName(){
		returnname;
}
	publicvoidsetName(Stringname){
		this.name=name;
}
	publicintgetAge(){
		returnage;
}
	publicvoidsetAge(intage){
System.out.println("-----------setAge");
		this.age=age;
}
	publicPeople(Stringname,intage){
super();
		this.name=name;
		this.age=age;
}
}
贴出运行结果:
Bill25
-----------我是华丽丽的分割线-----------
Bill25
-----------我是华丽丽的分割线-----------
{"zhangsan":35}
-----------我是华丽丽的分割线-----------
{"age":35,"name":"张三"}
然后,我们来使用JSONArray对数据进行解析,体会其中的差别!
packagecom.ctgu.classing;
importjava.util.ArrayList;
importjava.util.List;
importorg.json.JSONArray;
importorg.json.JSONException;
importorg.json.JSONObject;
publicclassTestJSON01{
	publicstaticvoidmain(String[]args){
		Stringstr="{'people':[{'firstName':'Brett','lastName':'McLaughlin','email':"
				+"'aaaa'},{'firstName':'Jason','lastName':'Hunter','email':'bbbb'},{"
				+"'firstName':'Elliotte','lastName':'Harold','email':'cccc'}]}";
		try{
//对上面的数据进行解析
			JSONObjectobj=newJSONObject(str);
			JSONArrayobj1=obj.getJSONArray("people");
			for(inti=0;i<obj1.length();i++){
				JSONObjecto=obj1.getJSONObject(i);
System.out.println(o.get("firstName"));
System.out.println(o.get("lastName"));
System.out.println(o.get("email"));
}
System.out.println("-------------华丽丽的分界线--------------");
//将list加入到JSONObject中
			List<People>list=newArrayList<>();//[{},{},{}]
			list.add(newPeople("zs",88));
			list.add(newPeople("ls",77));
			list.add(newPeople("ww",66));
			list.add(newPeople("zl",55));
			JSONArrayarray=newJSONArray(list);
			for(inti=0;i<array.length();i++){
				System.out.print(array.getJSONObject(i).getString("name")+"");
System.out.println(array.getJSONObject(i).getString("age"));
}
}catch(JSONExceptione){
e.printStackTrace();
}
}
}
贴出运行结果:
Brett
McLaughlin
aaaa
Jason
Hunter
bbbb
Elliotte
Harold
cccc
-------------华丽丽的分界线--------------
zs88
ls77
ww66
zl55

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: