fastjson的简单学习

package com.hanchao.testFastJson;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/***********************
 * 阿里的FastJson的简单学习
 * @author:han    
 * @version:1.0        
 * @created:2014-11-30    
 ***********************
 */
public class TestFastJson {
	
	/**
	 一、阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,
	        它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任何其他的
	   java Json parser 。包括自称最快的Jackson;功能强大,完全支持
	   Java Bean 、集合 、Map 、 日期 、 Enum ,支持泛型,支持自省;
	         无依赖 ,能够直接运行在Java SE5.0以上的版本;支持Andriod;
	          开源(Apache 2.0)
	   
	//下面是FastJson的简介:常用的方法!  
	//  Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。  
	//  public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray   
	//  public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject      
	//  public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean   
	//  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray   
	//  public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合   
	//  public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本   
	//  public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本   
	//  public static final Object toJSON(Object javaObject); 将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
	  
	 */

	public static void main(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
	 */
	private static void fastJsonTest5() {
		Weibo weibo = new Weibo("0310","洛阳");
		
		//转为JSon
		JSONObject json = (JSONObject) JSON.toJSON(weibo);
		System.out.println(json.get("id"));
	}

	/**
	 * 含有数组的json字符串
	 * 
	 * 2014-11-30
	 * @author : hanchao
	 */
	private static void fastJsonTest4() {
		User user1 = new User();
		user1.setId(1);
		user1.setName("hanchao");
		
		User user2 = new User();
		user2.setId(2);
		user2.setName("xiweiyuan");
		
		User user3 = new User();
		user3.setId(3);
		user3.setName("tom");
		
		Group group = new Group();
		group.setId(1);
		group.setName("love");
		group.getList().add(user1);
		group.getList().add(user2);
		group.getList().add(user3);
		
		String json = 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字符串 ★
		JSONObject object = JSON.parseObject(json);
		System.out.println("id : " + object.getIntValue("id"));
		System.out.println("name : " + object.getString("name"));
		
/*		Object jsonArray = object.get("list");
		System.out.println("jsonArray : " + jsonArray);
		List<User> list = JSON.parseArray(jsonArray+"",User.class); //★
	*/	
	
		//或者
		String jsonArray = object.getString("list");
		System.out.println("jsonArray : " + jsonArray);
		List<User> list = JSON.parseArray(jsonArray+"",User.class);
		
		for (User user : list) {
			System.out.println("id:" + user.getId() + ", name:" + user.getName());
		}
		
		//处理方法2.我们不知道数组里是一个什么样的javabean ★
		JSONArray jsonArray2 = object.getJSONArray("list");
		System.out.println("jsonArray2:" + jsonArray2);
		for (int i = 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
	 */
	private static void fastJsonTest3() {
		
		User user1 = new User();
		user1.setId(2);
		user1.setName("user1");
		
		User user2 = new User();
		user2.setId(3);
		user2.setName("user2");
		
		Group group = new Group();
		group.setId(1);
		group.setName("hanchao");
		group.getList().add(user1);
		group.getList().add(user2);
		
		Map<Integer, Object> map = new HashMap<Integer, Object>();
		map.put(1, "No.1");
		map.put(2, "No.2");
		map.put(3, group.getList());
		
		String jsonString = JSON.toJSONString(map);
		System.out.println(jsonString);
		//{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]}
		
		String jsonString2 = JSON.toJSONString(group);
		System.out.println(jsonString2);
		//{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"hanchao"}
		
	}

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

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


你可能感兴趣的:(fastjson)