序列化
序列化就是将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"