【问题标题】:Spring Boot http message converter serialize null sometimesSpring Boot http消息转换器有时会序列化null
【发布时间】: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 完成,我添加了一个您可以实施的答案。
  • 有时您想序列化相同实体的空值或者这些是不同的实体?

标签: json spring-boot gson http-message-converter


【解决方案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;

【讨论】:

  • 好的,如果这个答案解决了你的问题,请标记为答案,以便其他人可以得到帮助。
猜你喜欢
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 2017-05-23
  • 2019-10-03
  • 1970-01-01
相关资源
最近更新 更多