fastJSON中JSON类序列化详解

序列化
序列化就是将JavaBean对象转换成JSON格式的字符串。com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。

1.基本的序列化

传入一个对象,将对象转换为JSON字符串。

String objJson = JSON.toJSONString(Object object);

例1:自定义JavaBean转成JSON字符串

User user = new User();
user.setUsername("lili");
user.setPassword("123456");
user.setCurrentDate(new Date());

String jsonStr = JSON.toJSONString(user);

输出结果是:

{"currentDate":1523242635764,"username":"lili","password":"123456"}

例2:将List对象转为JSON字符串

         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

         Map<String, Object> map1 = new HashMap<String, Object>();
         map1.put("key1", "One");
         map1.put("key2", "Two");

         Map<String, Object> map2 = new HashMap<String, Object>();
         map2.put("key1", "Three");
         map2.put("key2", "Four");

         list.add(map1);
         list.add(map2);

         String listJson = JSON.toJSONString(list);

输出结果是:

[{"key2":"Two","key1":"One"},{"key2":"Four","key1":"Three"}]

例3:将Map转成JSON字符串

        Map<String, Object> map = new HashMap<String, Object>();
        map.put("key1", "One");
        map.put("key2", "Two");

        String mapJson = JSON.toJSONString(map);

输出结果是:

{"key2":"Two","key1":"One"}

例4:输出的JSON字符串格式化

String listJson = JSON.toJSONString(Object object, boolean prettyFormat);

以例2中的例子修改输出为:

String listJson = JSON.toJSONString(list, true);

输出结果是:

[
    {
        "key2":"Two",
        "key1":"One"
    },
    {
        "key2":"Four",
        "key1":"Three"
    }
]
2.fastJSON输出特性

fastJSON中的SerializerFeature是个枚举类,它提供了很多输出JSON字符串的特性。

String objJson = JSON.toJSONString(Object object, SerializerFeature... features) 

例1:WriteMapNullValue属性–是否输出值为null的属性,默认为false。
以上面的例2为示例:

         SerializerFeature[] features = {SerializerFeature.WriteMapNullValue};
         String listJson = JSON.toJSONString(list, features);

输出结果是:

[{"key3":null,"key2":"Two","key1":"One"},{"key3":"","key2":"Four","key1":"Three"}]

例2:UseSingleQuotes–使用单引号而不是双引号,默认为false

SerializerFeature[] features = {SerializerFeature.WriteMapNullValue, SerializerFeature.UseSingleQuotes};
String listJson = JSON.toJSONString(list, features);

输出结果是:

[{'key3':null,'key2':'Two','key1':'One'},{'key3':'','key2':'Four','key1':'Three'}]

例3:PrettyFormat–结果是否格式化,默认为false

SerializerFeature[] features = {SerializerFeature.WriteMapNullValue, SerializerFeature.PrettyFormat};
String listJson = JSON.toJSONString(list, features);

输出结果是:

[
    {
        "key3":null,
        "key2":"Two",
        "key1":"One"
    },
    {
        "key3":"",
        "key2":"Four",
        "key1":"Three"
    }
]

例4:日期格式化
FastJSON可以直接对日期类型格式化,在缺省的情况下,FastJSON会将Date转成long。

String dateJson = JSON.toJSONString(new Date()); 
System.out.println(dateJson);

输出结果:

1523244790120

使用指定的格式输出:

JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS")

例5:使用SerializerFeature特性(WriteDateUseDateFormat)格式化日期。

        String dateJson = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);
        System.out.println(dateJson);

输出结果:

"2018-04-09 11:35:25"

例6:指定日期输出格式

String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss", SerializerFeature.UseISO8601DateFormat);
System.out.println(dateJson);

输出结果:

"2018-04-09 11:38:12"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值