让 @RestController 返回的 json 不包含值为 null 的字段

2016-11-17 18:24:26   最后更新: 2016-11-21 11:36:31   访问数量:401




在实际的项目中,我们的 HTTP 接口通常需要返回某个预先定义的特定模式的 json 字符串,而不是通常用户所看到的 HTML

@RestController 就成为了一个非常实用的注解,只需要将 Controller 中相应的函数返回值设置成我们所定义的 json 对应的对象,Spring 会自动将其转换为 Json

但是,有时我们并不想要让他返回值为 null 的字段,这要怎么做呢?

 

如果我们使用 xml 配置,那么一定会加入 <mvc:annotation-driven/> 来启用 SpringMVC 供能,那么只需要在该节点中加入 <mvc:message-converters> 节点即可进行一些自定义配置:

<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="serializationInclusion" value="NON_NULL"/> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>

 

 

这样就不会返回对象中值为 null 的字段了

 

如果使用注解的方式进行配置,那么只需要在 java 配置类中加入如下内容即可:

package com.techlog.test.configuration; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.util.List; /** * Created by techlog on 2016/11/17. */ @Configuration @ComponentScan("com.techlog.test") public class WebConfig extends WebMvcConfigurationSupport { protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(converter()); addDefaultHttpMessageConverters(converters); } @Bean MappingJackson2HttpMessageConverter converter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); return new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL); } }

 

 

需要注意的是一旦用上述方法设置了 MessageConverters,就不能够添加 EnableWebMvc 注解了

 






技术帖      controller      技术分享      java      json      spring      springmvc      restcontroller      null     


京ICP备15018585号