首页 > 解决方案 > Spring Boot http消息转换器有时会序列化null

问题描述

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

标签: jsonspring-bootgsonhttp-message-converter

解决方案


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

@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;

推荐阅读