在你的代码中,你一定修改过出参格式把,例如把Date格式转换成年月日时分秒返回给前端,例如,因为Long型在前端有精度缺失的问题,把Long型转换为String类型返回给前端。如果你用代码手动去转,例如这样
DateUtils.format(new Date(),"YYYY-MM-DD");
再把值设置进去,挺耗费时间的,如果只是一行注解解决问题,是不是简单很多呢,如下所示:
@JSONField(serializeUsing = ToStringSerializer.class)
private Long id;
这就是我们要讲的fastJson与Springboot的融合。
一、怎么引入fastJson的转换
你只需要加一段如下代码,便可引入fastJson
@Configuration
public class WebConfig implements WebMvcConfigurer {
/**
25
* 使用fastjson代替jackson
26
* @param converters
27
*/
28
@Override
29
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
42
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
43
44
//自定义fastjson配置
45
FastJsonConfig config = new FastJsonConfig();
46
config.setSerializerFeatures(
SerializerFeature.WriteDateUseDateFormat,
SerializerFeature.DisableCircularReferenceDetect
53
);
54
fastJsonHttpMessageConverter.setFastJsonConfig(config);
converters.add(fastJsonHttpMessageConverter);
}
64
}
二、怎么使用
在引入了fastJson的全局配置后,如何使用呢?方式如下:
@JSONField(format = "yyyy年MM月dd日")
private Date birthDay;
此时你的日期格式出来就是format的格式了。
三、转换的原理是什么
转换的原理要结合源码去讲解,在我的另一篇博文java开发工具(9)fastJson注解是如何映射成指定出参格式的(源码解析)中有具体说明。
四、总结
关于类型的转换,我们能用注解是比用代码转换要好的,出现问题的可能性也小很多,最关键的是可以提升效率。但是有一些注意点,我在此说明下
- 注解的返回样式一定要统一,在fastJson中有一个配置数字类型转换String,如果为null会返回“0”,这个要去掉:
SerializerFeature.WriteNullNumberAsZero,
- @DateTimeFormat注解既可以转换入参也可以转换出参,转换出参的时候,如果用的是SpringBoot2以上的没有问题,如果SpringBoot版本较低,你只转换年月日,还会返回时分秒,此处要注意。