日期:2014-05-16  浏览次数:20340 次

FastJson简单介绍

? ? ?FastJson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。FastJson采用独创的算法,将parse的速度提升到极致,据说超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf.

?

maven引入

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.1.37</version>
</dependency>

?

? ? ? FastJson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成,以下为常用的API及作用:

?

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。

?

?

?

Json中使用单引号(默认转成json的是双引号)

Object o = ...;
String text = JSON.toJSONString(o, SerializerFeature.UseSingleQuotes);

?

?

FastJson中提供了一些有用的注解,可以更好的为我们服务,比如@JSONField

?

改变json中实体属性名称

@JSONField(name = "sms_info")
private String smsInfo;

?

日期格式化

@JSONField (format="yyyy-MM-dd HH:mm")

?

属性不进行json转换?

@JSONField(serialize=false)

?

注解也可以用在方法上(对于转换枚举等这种需要特殊处理的非常有用)

@JSONField(name="typeCode")
public String getTypeCode() {
	if(type!=null){
		return type.getCode();
	}
	return null;
}

?

?