json - Spring Boot http消息转换器有时会序列化null
问题描述
在 Spring Boot 中,是否可以有许多不同版本的 gson 或 Jackson http 转换器,并在我需要特定类型的数据格式时动态使用它们?
解决方案
您必须为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;
推荐阅读
- sql - 在地址字段中的房屋编号前插入逗号
- google-app-engine - 通过 Node.js 进行 AppEngine 身份验证
- sql - 如何正确过滤sqlite数据库中的数据?
- html - 在 HTML 页面上显示收到的 gstreamer mjpeg
- wordpress - 如何将自定义 HTML 表单与 wordpress 电子邮件地址连接起来
- javascript - 使用 Selenium 从脚本中抓取 JSON
- go - 具有嵌套负载的 JSON 绑定
- python-3.x - 为什么我会收到此错误 - KeyError: ('datetime64[ns]', 'left')?
- javascript - 通过一点的平行线
- vue.js - 重构为 Vue 组件:可读性与复杂性