Jackson序列化和反序列化忽略字段操作
一、設(shè)置Jackson序列化時(shí)只包含不為空的字段
new ObjectMapper().setSerializationInclusion(Include.NON_NULL);
二、設(shè)置在反序列化時(shí)忽略在JSON字符串中存在,而在Java中不存在的屬性
new ObjectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
三、Jackson序列化時(shí)忽略字段的方式
1、方式一:FilterProvider
a)在需要忽略某些字段的bean上添加@JsonFilter("fieldFilter")
b)ObjectMapper設(shè)置過(guò)濾器
FilterProvider filterProvider = new SimpleFilterProvider();
SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter().serializeAllExcept("name");
filterProvider.addFilter("fieldFilter");
new ObjectMapper.setFilters(filterProvider );
2、方式二:使用@JsonIgnore
在需要忽略的字段上標(biāo)注注解@JsonIgnore,在序列化時(shí)即可忽略該字段
補(bǔ)充知識(shí):Jackson 序列化對(duì)象成 JSON 字符串,忽略部分字段(屬性)
1、屬性上 加 @JsonIgnore
這種方式作用于全局,只要是有這個(gè)對(duì)象的序列化,就會(huì)忽略注解過(guò)的這部分字段。
2、上面那種方式需要在 bean 上加注解,作用于全局,但是有的時(shí)候,我們可能不需要在所有情況下都忽略這個(gè)對(duì)象的這些字段,下面這種方式可以支持定制過(guò)濾方式。
public final class JsonFilterUtil {
/**
* 添加過(guò)濾的字段,這里過(guò)濾的是 ThinActivityInfo 這個(gè) bean 下的
* "startAt", "expiredAt", "extra" 三個(gè)字段
*/
public static void addFilterForMapper(ObjectMapper mapper) {
SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter.serializeAllExcept(
Sets.newHashSet("startAt", "expiredAt", "extra"));
SimpleFilterProvider filterProvider = new SimpleFilterProvider().addFilter("fieldFilter", fieldFilter);
mapper.setFilterProvider(filterProvider).addMixIn(ThinActivityInfo.class, FieldFilterMixIn.class);
}
/**
* 定義一個(gè)類或接口
*/
@JsonFilter("fieldFilter")
interface FieldFilterMixIn{
}
}
以上這篇Jackson序列化和反序列化忽略字段操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問(wèn)題
這篇文章主要介紹了解決java字符串轉(zhuǎn)換成時(shí)間Unparseable date出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Springboot與vue實(shí)現(xiàn)文件導(dǎo)入方法具體介紹
文件導(dǎo)入時(shí)大多數(shù)項(xiàng)目無(wú)法回避的問(wèn)題,這兩天深入學(xué)習(xí)了文件導(dǎo)入,在這里進(jìn)行記錄,使用到的技術(shù)是Springboot+Vue,前端組件使用el-upload2023-02-02
解析Java的設(shè)計(jì)模式編程之解釋器模式的運(yùn)用
這篇文章主要介紹了解析Java的設(shè)計(jì)模式編程之解釋器模式的運(yùn)用,文中對(duì)解釋器模式的優(yōu)缺點(diǎn)及適用場(chǎng)景作出了分析,需要的朋友可以參考下2016-02-02
Elasticsearch?自動(dòng)重啟腳本創(chuàng)建實(shí)現(xiàn)
這篇文章主要為大家介紹了Elasticsearch?自動(dòng)重啟腳本創(chuàng)建實(shí)現(xiàn)詳解分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Java判斷object對(duì)象為空(包括null ,““)的方法
這篇文章主要介紹了Java判斷對(duì)象是否為空(包括null ,“”)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12

