Jackson忽略字段實(shí)現(xiàn)對字段進(jìn)行序列化和反序列化
在使用 Jackson 進(jìn)行序列化和反序列化時(shí),有時(shí)候需要對某些字段進(jìn)行過濾,以便在 JSON 數(shù)據(jù)中不包含某些敏感信息
@JsonInclude
可以標(biāo)記在字段上
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonIgnore {
boolean value() default true;
}
例如,以下代碼示例使用 @JsonIgnore 注解來隱藏敏感的密碼字段:
@Data
public class User {
private Integer id;
private String username;
@JsonIgnore // 隱藏了password字段
private String password;
}
@JsonIgnoreProperties
可以標(biāo)記在類上
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonIgnoreProperties {
String[] value() default {};
}
@Data
@JsonIgnoreProperties({"username","password"})
public class User {
private Integer id;
private String username;
private String password;
}
@JsonIgnoreType
// 被該注解修飾的類,
// 作為其他類的成員變量時(shí),不論是序列化還是反序列化都被忽略了;
@JsonIgnoreType
@JsonIgnoreType
public class TestChild {
private int value;
}
// Test類進(jìn)行序列化和反序列時(shí),
// 字段child被忽略
public class Test {
private String name;
private TestChild child;
}
JsonAutoDetect
// 根據(jù)訪問權(quán)限修飾符,對字段是否進(jìn)行序列化和反序列化
@JsonAutoDetect
// 只對訪問權(quán)限修飾符為public的字段進(jìn)行序列化和反序列化
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY)
public class College {
private String name;
private String city;
protected int age;
}
// fieldVisibility屬性有以下值可選 ANY // 所有 NON_PRIVATE // private之外的 PROTECTED_AND_PUBLIC // protected和public的(此時(shí)privte和默認(rèn)的package access時(shí)不能被自動(dòng)識(shí)別的) PUBLIC_ONLY // public的 NONE // 禁止自動(dòng)識(shí)別 DEFAULT // 默認(rèn)的,用于繼承父類的自動(dòng)識(shí)別的范圍
參考鏈接
https://blog.csdn.net/weixin_45427648/article/details/129645380
到此這篇關(guān)于Jackson忽略字段實(shí)現(xiàn)對字段進(jìn)行序列化和反序列化的文章就介紹到這了,更多相關(guān)Jackson忽略字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java8簡單了解Lambda表達(dá)式與函數(shù)式接口
這篇文章主要介紹了Java8簡單了解Lambda表達(dá)式與函數(shù)式接口,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
spring三級(jí)緩存以及為什么不用二級(jí)緩存解讀
Spring三級(jí)緩存機(jī)制解決了循環(huán)依賴問題,通過一級(jí)緩存存放完全初始化的bean,二級(jí)緩存存放實(shí)例化但未完成依賴注入和初始化的bean,三級(jí)緩存存放bean的創(chuàng)建工廠,避免了重復(fù)創(chuàng)建和確保代理對象的正確生成2025-02-02
java POI 如何實(shí)現(xiàn)Excel單元格內(nèi)容換行
這篇文章主要介紹了java POI 如何實(shí)現(xiàn)Excel單元格內(nèi)容換行的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java數(shù)據(jù)結(jié)構(gòu)與算法之選擇排序(動(dòng)力節(jié)點(diǎn)java學(xué)院整理)
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之選擇排序的相關(guān)資料,本文通過代碼講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下2017-04-04
java基礎(chǔ)知識(shí) super和this使用解析
這篇文章主要介紹了java基礎(chǔ)知識(shí) super和this使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解
這篇文章主要介紹了java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09

