首页 > 解决方案 > 如何在我的 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));
}

似乎没有任何效果。我仍然在对象中看到空对象。这些对象是嵌套有原始类型和自定义对象的复杂对象。我还能尝试什么?

标签: jsonspring-bootjackson

解决方案


请在类文件前添加@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;
    }

}

推荐阅读