Spring Boot http消息转换器有时会序列化null

Posted

技术标签:

【中文标题】Spring Boot http消息转换器有时会序列化null【英文标题】:Spring Boot http message converter serialize null sometimes 【发布时间】:2020-02-04 22:10:14 【问题描述】:

在 Spring boot 中,是否可以有许多不同版本的 gson 或 Jackson http 转换器,并在我需要特定类型的数据格式时动态使用它们?

【问题讨论】:

嗨,Kingj,您能否提供更多有关您想要做什么的信息?例如您的ConverterObjects that you need to serialize as null or not dinamically 代码? 其 null 的原因之一是它无法解析对象并引发您捕获并抑制的异常(可能不是故意的)。在您的班级顶部添加@JsonIgnoreProperties(ignoreUnknown=true) @Kingj 完成,我添加了一个您可以实施的答案。 有时您想序列化相同实体的空值或者这些是不同的实体? 【参考方案1】:

您必须为 GsonHttpMessageConverter 创建两个 bean,第一个具有默认设置,第二个具有通过以下方式序列化 null 的设置:

@Bean
public GsonHttpMessageConverter gsonHttpMessageConverter() 
    return buildGsonHttpMessageConverter(MapperUtil.getGsonInstance());


@Bean
public GsonHttpMessageConverter gsonHttpMessageConverterWithNulls() 
    return buildGsonHttpMessageConverter(MapperUtil.getGsonInstanceSerializeNulls());


private GsonHttpMessageConverter buildGsonHttpMessageConverter(final Gson gson) 
    final GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
    converter.setGson(gson);
    return converter;

当您想使用其中之一时,请调用@Qualifier("someBean") 注释。通过以下方式:

@Autowired
@Qualifier("gsonHttpMessageConverter")
GsonHttpMessageConverter gsonHttpMessageConverter;

@Autowired
@Qualifier("gsonHttpMessageConverterWithNulls")
GsonHttpMessageConverter gsonHttpMessageConverterWithNulls;

【讨论】:

好的,如果这个答案解决了你的问题,请标记为答案,以便其他人可以得到帮助。

以上是关于Spring Boot http消息转换器有时会序列化null的主要内容,如果未能解决你的问题,请参考以下文章

spring boot框架学习7-spring boot的web开发-自定义消息转换器

Spring Boot Cookbook 中文笔记

Spring Boot消息服务

我应该如何在 Spring Boot 中配置 httpMessageConverters 以将消息转换为所需的格式?

(spring-boot) http 到 https 重定向,405 方法不允许消息

spring boot日期转换