序列化和反序列化

参考 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);

    }

测试结果

这里写图片描述

posted on 2017-03-13 14:37  dreamstar  阅读(105)  评论(0编辑  收藏  举报