我正在使用Spring Boot 1.5.4版本。我正在使用spring-ws getWebServiceTemplate()
进行网络服务调用。SOAP 响应具有许多字段的空值。
我正在尝试过滤掉 JSON 响应中的空值。以下方法似乎都不起作用:
- 在
application.properties
中设置属性:
spring.jackson.default-property-inclusion:NON_NULL`
- 使用
Jackson2ObjectMapperBuilder
在配置类中设置它:
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
return builder;
}
请指教。
LVA
我正在使用Spring Boot 1.5.6.RELEASE版本,您可以参考 自定义杰克逊对象映射器
以下代码是有效的:
@SpringBootApplication
public class Application {
@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
return builder;
}
public static void main(String[] args) {
SpringApplication.run(DbeeApiApplication.class, args);
}
}
或者您可以从MappingJackson2HttpMessageConverter
中过滤,例如:
@Configuration
class WebMvcConfiguration extends WebMvcConfigurationSupport {
@Override
protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
for(HttpMessageConverter<?> converter: converters) {
if(converter instanceof MappingJackson2HttpMessageConverter) {
ObjectMapper mapper = ((MappingJackson2HttpMessageConverter)converter).getObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
}
}
}
}
在application.properties中使用以下内容是有效的。
spring.jackson.default-property-inclusion=NON_NULL