json - 如何在我的 REST JSON 响应中避免空对象?
问题描述
我在我的 JSON 响应中得到了类似的东西(我在 SpringBoot 中有一个 REST 实现):
"estimatedDeliveryTimeWindow":{
"window":{}
}
我已经设置了自定义 HTTPMessageCONverters 并像这样配置了 objectMapper:
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
还尝试使用以下代码删除默认转换器:
@Bean
public HttpMessageConverters converters() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
jsonConverter.setObjectMapper(objectMapper);
return new HttpMessageConverters(false, Arrays.asList(jsonConverter));
}
似乎没有任何效果。我仍然在对象中看到空对象。这些对象是嵌套有原始类型和自定义对象的复杂对象。我还能尝试什么?
解决方案
请在类文件前添加@JsonInclude(Include.NON_NULL)
@JsonInclude(Include.NON_NULL)
public class MobileLoginVO {
private String otpDetailsId;
public String getOtpDetailsId() {
return otpDetailsId;
}
public void setOtpDetailsId(String otpDetailsId) {
this.otpDetailsId = otpDetailsId;
}
}
推荐阅读
- c# - C#:找不到类型或命名空间名称“DEVMODE”
- android - 教程中的代码现在不起作用
- tfs - TFS 2018 API - 生成 PAT 或 SSH
- node.js - 节点红色 HTTP POST 参数
- apache-kafka - Kafka 流是否可以将输出写入两个不同的主题?
- bash - 无法通过 Bash 变量将带引号的标志传递给可执行文件
- sql-server - 用于还原数据库的具有可变日期和时间的文件名
- laravel - 如何访问对象属性?
- php - 我正在使用 laravel 5.4 和 php 7.2 并出现以下问题
- node.js - MongooseAutoIncrementID.initialise 不是一个函数.." 如果我使用 ES5 要求 ('mongoose-auto-increment-reworked') 会显示