序列化和反序列化
参考 http://blog.csdn.net/glarystar/article/details/6654494
序列化和反序列化:就是json串和对象之间的转换
序列化:对象转为json串 JSONObject.toJSONString()方法
反序列化化:json串转为对象 JSONObject.parseObject()方法
定制序列化,参考http://www.cnblogs.com/dirgo/p/5178629.html
定制序列化序列化时可以根据自己的要求指定需要转json的字段,如果不指定的话,默认全部
第一步:导入fastjson-1.1.33.jar及其他依赖包
第二步:定义实体类
public class DestinationPoint{
private String name;// 名称
private Float altitude;// 纬度
private Float longitude;// 经度
private Float latitude;// 海拔
//getter setter方法
//如果想转成json一定要有get()方法
}
第三步:测试代码
com.alibaba.fastjson.JSONObject 定义对象的序列化和反序列化
com.alibaba.fastjson.serializer.SimplePropertyPreFilter定义序列化的字段
import java.io.File;
import com.alibaba.fastjson.JSONObject; //序列化和反序列化
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; //定制序列化
public static void main(String[] args) {
// 第一步:新建一个Area对象
DestinationPoint destination = new DestinationPoint();
destination.setName("sss");
destination.setAltitude((float) 11);
destination.setLatitude((float) 11);
destination.setLongitude((float) 11);
/** 第二步:默认序列化和反序列化 */
// 序列化:对象的所有非空字段转为json字符串
String desJson = JSONObject.toJSONString(destination);
System.out.println(desJson);
// 反序列化:json字符串转为对象
DestinationPoint destination2 = JSONObject.parseObject(desJson, DestinationPoint.class);
System.out.println(destination2.getLongitude());
/** 定制序列化,只序列化对象的name和code属性 */
// 定制序列化:根据PropertyName判断是否序列化
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(DestinationPoint.class, "name", "altitude");
String desJsonFilter = JSONObject.toJSONString(destination, filter);
System.out.println(desJsonFilter);
//反序列化
DestinationPoint destination3 = JSONObject.parseObject(desJsonFilter, DestinationPoint.class);
System.out.println(destination3.getLongitude());
}
测试结果如下
第四步:测试代码2
com.alibaba.fastjson.JSON日期序列化
com.alibaba.fastjson.serializer.SerializerFeature类来定义日期序列化的格式
import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public static void main(String[] args) {
Date date = new Date();
/*输出毫秒值*/
String strData1 = JSON.toJSONString(date);
System.out.println(strData1);
/* 默认格式为yyyy-MM-dd HH:mm:ss*/
String strDate2 = JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat);
System.out.println(strDate2);
/*根据自定义格式输出日期*/
String strDate3 = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat);
System.out.println(strDate3);
}
测试结果