FastJson工具的SerializerFeature序列化属性简述
默认的情况下,FastJson在解析数据的时候,如果数据的值是null,是不会显示的,要显示,就需要使用不同的方式去进行解析;而有的时候,我们的数据中如果有日期的数据,直接转换成JSON字符串时,显示的是一串数字,不是我们所需要的目录,这个时候,同样要使用不同的方式进行数据的解析。
而这些解析方式,都要通过FastJson提供的序列化属性来完成,这个序列化属性就是SerializerFeature。
以下是所有的SerializerFeature属性:
应用示例:
表1
package com.edu118.myFastJson;
import java.util.Date;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.edu118.obj.Person;
//对象转换成JSON字符串 public class Object2JsonStr { public static void main(String[] args) { //创建Person对象 Person p1 = new Person("信盈达公司", 11, "男", new Date());
//把p1对象,转换成JSON字符串 String jsonString = JSON.toJSONString(p1);
System.out.println("Person对象转换后的JSON字符串:\n" + jsonString);
System.out.println("使用序列化属性转换后的数据:");
String jsonString2 = JSON.toJSONString(p1,SerializerFeature.UseISO8601DateFormat);
System.out.println(jsonString2); } }
|
测试结果:
表2
Person对象转换后的JSON字符串: {"age":11,"birthday":1545969269210,"sex":"男","username":"信盈达公司"} 使用序列化属性转换后的数据: {"age":11,"birthday":"2018-12-28T11:54:29.210+08:00","sex":"男","username":"信盈达公司"} |
示例2:
转换数据有null的情况:
表3
package com.edu118.myFastJson;
import java.util.Date;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.edu118.obj.Person;
//对象转换成JSON字符串 public class Object2JsonStr { public static void main(String[] args) { //创建Person对象 Person p1 = new Person("信盈达公司", 11, null, new Date());
//System.out.println("Person对象的toString方法结果:\n" + p1.toString());
//System.out.println();
//把p1对象,转换成JSON字符串 String jsonString = JSON.toJSONString(p1);
System.out.println("Person对象转换后的JSON字符串:\n" + jsonString);
System.out.println("使用序列化属性转换后的数据:");
String jsonString2 = JSON.toJSONString(p1, SerializerFeature.UseISO8601DateFormat, SerializerFeature.WriteMapNullValue);
System.out.println(jsonString2); } }
|
测试结果:
表4
Person对象转换后的JSON字符串: {"age":11,"birthday":1545969436968,"username":"信盈达公司"} 使用序列化属性转换后的数据: {"age":11,"birthday":"2018-12-28T11:57:16.968+08:00","sex":null,"username":"信盈达公司"}
|
可以看到,常规的转换,如果属性的值是null,是不会显示出来的,如果一定要显示,就需要使用到序列化属性来完成。