Fastjson全局配置的一些事情

最近又想将项目中的LocalDateTime序列化和反序列化统一起来,所以需要对Fastjson进行全局化配置,Fastjson全局化配置并不是很复杂,如下代码即可完成:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17

SerializeConfig serializeConfig = SerializeConfig.globalInstance;

// 添加处理LocalDateTime的处理器
serializeConfig.put(LocalDateTime.class, (JSONSerializer serializer,
                                            Object object,
                                            Object fieldName,
                                            Type fieldType,
                                            int features) -> {
    LocalDateTime fieldValue = (LocalDateTime) object;

    ZoneId systemDefaultZoneId = ZoneId.systemDefault();
    ZoneOffset offset = systemDefaultZoneId.getRules().getOffset(fieldValue);

    serializer.write(fieldValue.toInstant(offset).toEpochMilli());
});

在这段配置中,我为fastjson的序列化配置增加了一项针对LocalDateTime类型的序列化器,该序列化器会将LocalDateTime类型的对象转换成一个时间戳。