fastjson的简单学习

packagecom.hanchao.testFastJson;

importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importcom.alibaba.fastjson.JSON;
importcom.alibaba.fastjson.JSONArray;
importcom.alibaba.fastjson.JSONObject;

/***********************
*阿里的FastJson的简单学习
*@author:han
*@version:1.0
*@created:2014-11-30
***********************
*/
publicclasstestFastJson{
	
	/**
	一、阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,
	它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任何其他的
	javaJsonparser。包括自称最快的Jackson;功能强大,完全支持
	JavaBean、集合、Map、日期、Enum,支持泛型,支持自省;
	无依赖,能够直接运行在JavaSE5.0以上的版本;支持Andriod;
	开源(Apache2.0)
	
	//下面是FastJson的简介:常用的方法!
	//FastjsonAPI入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
	//publicstaticfinalObjectparse(Stringtext);//把JSON文本parse为JSONObject或者JSONArray
	//publicstaticfinalJSONObjectparSEObject(Stringtext);//把JSON文本parse成JSONObject
	//publicstaticfinal<T>TparSEObject(Stringtext,Class<T>clazz);//把JSON文本parse为JavaBean
	//publicstaticfinalJSONArrayparseArray(Stringtext);//把JSON文本parse成JSONArray
	//publicstaticfinal<T>List<T>parseArray(Stringtext,Class<T>clazz);//把JSON文本parse成JavaBean集合
	//publicstaticfinalStringtoJSONString(Objectobject);//将JavaBean序列化为JSON文本
	//publicstaticfinalStringtoJSONString(Objectobject,booleanprettyFormat);//将JavaBean序列化为带格式的JSON文本
	//publicstaticfinalObjecttoJSON(ObjectjavaObject);将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)
	
	
	<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.1.46</version>
	</dependency>
	
	参考文章:
	http://blog.csdn.net/djun100/article/details/24237371
	http://www.open-open.com/lib/view/open1405608707281.html
	
	*/

	publicstaticvoidmain(String[]args){
		//1.将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
		fastJsonTest1();
		
		//2.将Json文本转换为JavaBean对象。
		fastJsonTest2();
		
		//3.将Map类型的数据转为Json字符串
		fastJsonTest3();
		
		//4.含有数组的json字符串,如何处理
		fastJsonTest4();
		
		//5.将javabean转为json对象
		fastJsonTest5();
	}

	/**
	*将javabean转为json对象
	*
	*2014-11-30
	*@author:hanchao
	*/
	privatestaticvoidfastJsonTest5(){
		Weiboweibo=newWeibo("0310","洛阳");
		
		//转为JSon
		JSONObjectjson=(JSONObject)JSON.toJSON(weibo);
		System.out.println(json.get("id"));
	}

	/**
	*含有数组的json字符串
	*
	*2014-11-30
	*@author:hanchao
	*/
	privatestaticvoidfastJsonTest4(){
		Useruser1=newUser();
		user1.setId(1);
		user1.setName("hanchao");
		
		Useruser2=newUser();
		user2.setId(2);
		user2.setName("xiweiyuan");
		
		Useruser3=newUser();
		user3.setId(3);
		user3.setName("tom");
		
		Groupgroup=newGroup();
		group.setId(1);
		group.setName("love");
		group.getList().add(user1);
		group.getList().add(user2);
		group.getList().add(user3);
		
		Stringjson=JSON.toJSONString(group);
		System.out.println(json);
		//{"id":1,"list":[{"id":1,"name":"hanchao"},{"id":2,"name":"xiweiyuan"},{"id":3,"name":"tom"}],"name":"love"}
		
		//下面我要处理上面的json字符串★
		JSONObjectobject=JSON.parSEObject(json);
		System.out.println("id:"+object.getIntValue("id"));
		System.out.println("name:"+object.getString("name"));
		
/*		ObjectjsonArray=object.get("list");
		System.out.println("jsonArray: "+jsonArray);
		List<User>list=JSON.parseArray(jsonArray+"",User.class);//★
	*/	
	
		//或者
		StringjsonArray=object.getString("list");
		System.out.println("jsonArray: "+jsonArray);
		List<User>list=JSON.parseArray(jsonArray+"",User.class);
		
		for(Useruser:list){
			System.out.println("id:"+user.getId()+",name:"+user.getName());
		}
		
		//处理方法2.我们不知道数组里是一个什么样的javabean★
		JSONArrayjsonArray2=object.getJSONArray("list");
		System.out.println("jsonArray2:"+jsonArray2);
		for(inti=0;i<jsonArray2.size();i++){
			System.out.println("id:"+jsonArray2.getJSONObject(i).getIntValue("id"));//★
			System.out.println("name:"+jsonArray2.getJSONObject(i).getString("name"));
		}
	}

	/**
	*将Map类型的数据转为Json字符串
	*
	*2014-11-30
	*@author:hanchao
	*/
	privatestaticvoidfastJsonTest3(){
		
		Useruser1=newUser();
		user1.setId(2);
		user1.setName("user1");
		
		Useruser2=newUser();
		user2.setId(3);
		user2.setName("user2");
		
		Groupgroup=newGroup();
		group.setId(1);
		group.setName("hanchao");
		group.getList().add(user1);
		group.getList().add(user2);
		
		Map<Integer,Object>map=newHashMap<Integer,Object>();
		map.put(1,"No.1");
		map.put(2,"No.2");
		map.put(3,group.getList());
		
		StringjsonString=JSON.toJSONString(map);
		System.out.println(jsonString);
		//{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},"name":"user2"}]}
		
		StringjsonString2=JSON.toJSONString(group);
		System.out.println(jsonString2);
		//{"id":1,"list":[{"id":2,"name":"user2"}],"name":"hanchao"}
		
	}

	/**
	*将Json文本数据转换为JavaBean数据。
	*需要注意的是:json字符串中的“键名”必须和JavaBean中的
	*字段名称一样!键中没有的在这个JavaBean中就显示为null.
	*
	*
	*2014-11-30
	*@author:hanchao
	*/
	privatestaticvoidfastJsonTest2(){
		Stringstr="{\"id\":\"123\",\"city\":\"北京\"}";
		//一个简单方便的方法将Json文本信息转换为JsonObject对象的同时转为JavaBean对象!
		Weiboweibo=JSON.parSEObject(str,Weibo.class);
		System.out.println(weibo.getId()+","+weibo.getCity());
	}

	/**
	*将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
	*
	*2014-11-30
	*@author:hanchao
	*/
	privatestaticvoidfastJsonTest1(){
		Stringstr="{\"name\":\"hanchao\"}";
		//json字符串转为Json对象
		JSONObjectobject=JSON.parSEObject(str);
		System.out.println(object);
		System.out.println(object.get("name"));
	}
	
}

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...