Jackson 轉(zhuǎn)換JSON,SpringMVC ajax 輸出,當值為null或者空不輸出字段@JsonInclude
當我們提供接口的時候, Ajax 返回的時候,當對象在轉(zhuǎn)換 JSON (序列化)的時候,值為Null 或者為“” 的字段還是輸出來了。看上去不優(yōu)雅。
現(xiàn)在我敘述三種方式來控制這種情況。
注解的方式( @JsonInclude(JsonInclude.Include.NON_EMPTY))
通過@JsonInclude 注解來標記,但是值的可選項有四類。
- Include.Include.ALWAYS (
Default/ 都參與序列化) - Include.NON_DEFAULT(當
Value為默認值的時候不參與,如Int a;當a=0的時候不參與) - Include.NON_EMPTY(當
Value為“”或者null不輸出) - Include.NON_NULL(當
Value為null不輸出)
注解使用如下:
... ...
//如果是null 和 “” 不返回
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private T data;
... ...我的對象定義(其實就是一個API接口的返回對象):
public class APIResult<T> implements Serializable {
//狀態(tài)
private Integer status;
//描述
private String message;
//如果是null 不返回
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private T data;
/*** getter / setter***/
}我的前端返回值:
{"status":200,"message":"success"}如上,基本達到我的要求了。
代碼方式:
ObjectMapper mapper = new ObjectMapper();
//null不序列化
mapper.setSerializationInclusion(Include.NON_NULL);
Demo demo = new Demo(200,"",null);
String json = mapper.writeValueAsString(demo);
System.out.println(json);
//結(jié)果:{"st":200,"name":""} 為null的屬性沒輸出。Spring配置文件實現(xiàn)
當我們整個項目都需要某一種規(guī)則的時候,那么我們就采用配置文件配置。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency> 再來一個XML配置:
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
<mvc:annotation-driven>
<mvc:message-converters>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>其實所有的姿勢都是針對 Jackson 提供給我們的入口“JsonInclude.Include” 來處理的。所以只要記住最上面講的幾個級別就可以了。
其實這些都是一些基礎(chǔ)知識,我只是整合下,后面要豐富首頁的內(nèi)容。
版權(quán)所屬:SO JSON在線解析
原文地址:http://suancuo.cn/blog/248.html
轉(zhuǎn)載時必須以鏈接形式注明原始出處及本聲明。
如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。
