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"));
	}

}
时间: 2024-10-07 10:54:11

fastjson的简单学习的相关文章

$.fn.extend简单学习

(function($){ /** 1. $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法, 那么后面你的每一个jquery实例都可以引用这个方法了.  那么你可以这样子:$("#div").abc();  2.   jQuery为开发插件提拱了两个方法,分别是:  jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法.→

varnish简单学习

操作系统:redhat5.5 前端服务器:varnish cache 2.1.5 监听端口8080 后端服务器:tengine 1.4.6 监听端口80 接着,建立varnish用户以及用户组,并且创建Varnish缓存目录和日志目录:[[email protected] ~]#useradd  -s /sbin/nologin varnish[[email protected] ~]#mkdir /data/varnish/cache[[email protected] ~]#mkdir /d

spring4.0.6最新稳定版新特性学习,简单学习教程(一)

Spring Framework 4.0 学习整理. Spring框架的核心部分就是Ioc容器,而Ioc控制的就是各种Bean,一个Spring项目的水平往往从其XML配置文件内容就能略知一二,很多项目,往往是外包公司的项目,配置文件往往是乱七八糟,抱着能跑就行,不报错就行的态度去写,然后在项目中后期发现各种缺失又去一通乱补,其结果就是,整个文档可读性极差,毫无章法.这也不能怪写这个XML的人,拿着苦逼程序员的工资干着架构师的工作必然是这个结果.为了程序员的幸福,我认为有必要来一套简单快速的官方

JAVA学习Swing章节按钮组件JButton的简单学习

package com.swing; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import javax.swing.Icon; import javax.swing.ImageIcon;

Settings app简单学习记录

Settings是android系统设置的入口.主界面由Settings.java以及settings_headers.xml构成. Settings类继承自PreferenceActivity,而PreferenceActivity又继承自ListActivity,ListActivity拥有ListView和ListAdapter类型的成员变量. 1,如何使用PreferenceActivity构建页面 使用addPreferencesFromIntent或者addPreferencesFr

高内聚低耦合简单学习

起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单, 两个定性的度量标准――耦合性和内聚性. 耦合性也称块间联系.指软件系统结构中各模块间相互联系紧密程度的一种度量.模块之间联系越 紧密,其耦合性就越强,模块的独立性则越差.模块间耦合高低取决于模块间接口的复杂性.调用的方 式及传递的信息.   耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合; 1 无直接耦合: 2 数据耦合: 指两个模块之间有调用关系,传递的是简单的数

队列的简单学习

/**  * 1.在Java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.  *   * Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取  * 或移除的元素.他们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常.  * 如果要使用前端而不移除该元素,使用element()或者pe

mysql 存储过程简单学习

转载自:http://blog.chinaunix.net/uid-23302288-id-3785111.html ■存储过程Stored Procedure 存储过程就是保存一系列SQL命令的集合,将这些sql命令有组织的形成一个小程序,这样会实现很复杂的处理 SQL基本是一个命令一个命令执行,虽然可以通过连接.子查询等实现些高级的处理,但局限性是显而易见的 ■存储过程的优势 1.提高执行性能(存储过程事先完成了解析.编译的处理,执行时能减轻数据库负担) 2.可减轻网络负担(比起多次传递SQ

Log4j简单学习笔记

log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常用级别的划分:Debug,Info,Warn,Error,Fatal这5个级别由低到高,如果配置的级别为"INFO"那么"Debug"级别的信息则不会显示"依次类推. 示例代码: @Test public void testLevel() { log.debu