SpringMVC 之 JSON系列化方式配置
SpringBoot (SpringMvc) 中,@ResponseBody @RestController 将返回值进行 JSON 系列化 ,可支持自定义系列换方式,
自定义配置类 实现 WebMvcConfigurer 类 ,重写 extendMessageConverters 或者 configureMessageConverters 方法,将自定义系列化的方法配置如方法中,可自行编写系列化方式,如 FastJSON / Gson 方式进行,当然,Spring默认使用的是 Jackson ,开发中不建议更换,更换单纯的只是测试一下使用
二者二选一
1、SpringMVC 核心配置文件中配置转换器 configureMessageConverters()
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter fjConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fjConfig = new FastJsonConfig(); fjConfig.setDateFormat("yyyy-MM-dd"); fjConfig.setCharset(Charset.forName("UTF-8")); fjConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, SerializerFeature.WriteNullListAsEmpty ); fjConverter.setFastJsonConfig(fjConfig); // converters.add(fjConverter); 无效 converters.add(1, fjConverter); }
2、SpringMVC 核心配置文件中配置转换器 extendMessageConverters()
@Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter fjConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fjConfig = new FastJsonConfig(); fjConfig.setDateFormat("yyyy-MM-dd"); fjConfig.setCharset(Charset.forName("UTF-8")); fjConfig.setSerializerFeatures( SerializerFeature.PrettyFormat, SerializerFeature.WriteNullListAsEmpty ); fjConverter.setFastJsonConfig(fjConfig); // converters.add(fjConverter); 无效 converters.add(1, fjConverter); }
注意:配置后不生效的问题 参看:https://segmentfault.com/a/1190000015975405
SpringBoot 默认使用的是 MappingJackson2HttpMessageConverter 进行系列化专业换,转换器 集合从索引 0 开始 获取相应的 转换器,将自定义的转换器配置到 MappingJackson2HttpMessageConverter 之前即可生效,入下示例 配置到 索引 为 1 的位置
本文来自博客园,作者:Vermeer,转载请注明原文链接:https://www.cnblogs.com/chxlay/p/16028806.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步