JSON介绍
JSON如今已经作为跨语言、前后端数据交互的一种标准,当我使用java做后台的时候经常需要向前端传递json格式的数据,或者将前端传递过来的json数据进行解析。这时候就需要json的解析器了,www.json.org是json的标准,上面有许多json解析器。
fastjson介绍
fastjson是阿里开源的使用java实现的json解析器,其速度是目前java中最快的json解析器。它支持Java Bean、Collection、List、Map等常用java集合。
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。--官网
常用API
fastjson入口类是:com.alibaba.fastjson.JSON,主要API是JSON.toJSONString和JSON.parSEObject
@H_404_31@public abstract class JSON{
public static final String toJSONString(Object object);
public static final <T> T parSEObject(String,text,Class<T> class,Feature... feature)
}
序列化
@H_404_31@String jsonString = JSON.toJSONString(obj);
反序列化
泛型反序列化
@H_404_31@List<VO> list = JSON.parSEObject("....",new TypeReference<List<VO>>(){});
JSONField
JSONField是JSON支持的注解:
@H_404_31@public @interface JSONField {
/**
* config encode/decode ordinal
* @since 1.1.42
* @return
*/
int ordinal() default 0; //配置序列化和反序列化的顺序
String name() default "";//指定字段名称
String format() default "";//指定字段的格式,对日期格式有效
boolean serialize() default true;//是否序列化
boolean deserialize() default true;//是否反序列化
}使用案例
@H_404_31@public Class User{
@JSONField(ordinal=3) //指定序列化顺序,默认javabean是根据fieldName的字母顺序序列化的
@JSONField(name="ID") //配置在field上
private int id;
@JSONField(ordinal=2)
@JOSNField(serialize=false) //指定字段不参与序列化
private String name;
@JSONField(ordinal=1)
@JSONField(format=yyMMdd) //指定日期格式化
private String birthday;
@JSONField(name="ID") //配置在set/getxx上面
public setId(int id){
this.id=id
}
}
更过使用查看: https://github.com/alibaba/fastjson/wiki/
更过使用查看: https://github.com/alibaba/fastjson/wiki/