2022-03-20 00:56阅读: 658评论: 0推荐: 0

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 的位置

 

posted @   Vermeer  阅读(658)  评论(0编辑  收藏  举报

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起