fastjson应用

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

public abstract class JSON{
	public static final String toJSONString(Object object);
	public static final  <T> T parseObject(String,text,Class<T> class,Feature... feature)
}


序列化
String jsonString = JSON.toJSONString(obj);

反序列化
Ob ob = JSON.parseObject("....",Ob.class);

泛型反序列化
List<VO> list = JSON.parseObject("....",new TypeReference<List<VO>>(){});

JSONField

JSONField是JSON支持的注解:
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;//是否反序列化

}
使用案例
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/

通用后台JSON

import com.alibaba.fastjson.JSONObject;

public class CommonResult{
	private int code;	//返回状态码
	private String msg;	//返回信息
	private Object data;//返回数据

	public CommonResult(){
	}
	
	public CommonResult(int code,String msg){
		this.code = code;
		this.msg = msg;
	}
	
	public CommonResult(int code,String msg,Object data){
		this(code,msg);
		this.data = data;
	}
	
	public CommonResult defaultError(String msg){
		return CommonResult.build(1,msg);
	}
	
	public CommonResult success(String msg){
		return CommonResult.build(0,msg);
	}
	
	public CommonResult success(Object data){
		return CommonResult.build(0,"success",data);
	}
	
	public CommonResult success(String msg,Object data){
		return CommonResult.build(0,msg,data);
	}
	
	public static CommonResult build(int code,String msg){
		return CommonResult.build(code,msg,"");
	}

	public static CommonResult build(int code,String msg,Object data){
		CommonResult res = new CommonResult(code,msg,data);
		return res;
	}

	public JSONObject toJson(){
		JSONObject json = new JSONObject();
		json.put("code",this.code);
		json.put("msg",this.msg);
		json.put("data",this.data);
		return json;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}

	public Object getData() {
		return data;
	}

	public void setData(Object data) {
		this.data = data;
	}

}


猜你喜欢

转载自blog.csdn.net/colin_yjz/article/details/50265511