SpringmvcJSON转换器MappingJackson2HttpMessageConverter设置对值为null的处理

时间:2025-03-19 10:43:49

我们在使用springmvc中的 @ResponseBody 注解返回JSON时可以配置Json转换器如下:

<!-- 请求信息转换器,负责读取和写入json格式的数据 -->
<bean 
	class=".MappingJackson2HttpMessageConverter">
	<property name="supportedMediaTypes">
		<list>
			<value>application/json;charset=UTF-8</value>
		</list>
	</property>
</bean>

有时我们返回的字段存在null的情况我们需要对其进行处理,objectMapper提供了默认的几种处理方式配置如下:

<bean   
        class=".MappingJackson2HttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>application/json;charset=UTF-8</value>  
            </list>  
        </property>  
        <property name="objectMapper">  
            <bean class="">  
                <property name="serializationInclusion">  
                    <value type="">NON_NULL</value>  
                </property>  
            </bean>  
        </property>    
</bean>  

这种是将字段为null的清理掉不在结果Json中显示出来,其余的还有以下几种配置:

        ALWAYS,  NON_NULL,   NON_DEFAULT, NON_EMPTY

有些特殊情况,我们不能将null字段直接去除,而是需要给予一个默认的值,则可以设置如下配置:

<bean   
    class=".MappingJackson2HttpMessageConverter">  
    <property name="supportedMediaTypes">  
        <list>  
            <value>application/json;charset=UTF-8</value>  
        </list>  
    </property>  
    <property name="objectMapper">  
        <bean class="">  
            <property name="serializerProvider">  
                <bean class="">  
                    <property name="nullValueSerializer">  
                        <bean class=""></bean>  
                    </property>  
                </bean>  
            </property>  
        </bean>  
    </property>  
</bean>  

自定义的null处理类如下;

import ;  
import ;  
import ;  
  
import ;  
import ;  
import ;  
import ;  
  
public class GomeSearchJsonSerializer extends JsonSerializer<Object> {  
  
    @Override  
    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider)  
            throws IOException, JsonProcessingException {  
//        ("");  
        (new JsonNullDef());  
    }  
  
}  
  
class JsonNullDef{  
      
    private List<String> def = new ArrayList<>();  
  
    public List<String> getDef() {  
        return def;  
    }  
  
    public void setDef(List<String> def) {  
         = def;  
    }    
      
}  

大家可以根据自己的需求来设置null的自定义值.

转载自此地址