Jackson忽略字段實(shí)現(xiàn)對字段進(jìn)行序列化和反序列化
在使用 Jackson 進(jìn)行序列化和反序列化時,有時候需要對某些字段進(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
// 被該注解修飾的類,
// 作為其他類的成員變量時,不論是序列化還是反序列化都被忽略了;
@JsonIgnoreType
@JsonIgnoreType
public class TestChild {
private int value;
}
// Test類進(jìn)行序列化和反序列時,
// 字段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的(此時privte和默認(rèn)的package access時不能被自動識別的) PUBLIC_ONLY // public的 NONE // 禁止自動識別 DEFAULT // 默認(rèn)的,用于繼承父類的自動識別的范圍
參考鏈接
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)文章
Java中ShardingSphere分庫分表實(shí)戰(zhàn)
我們做項目的時候,數(shù)據(jù)量比較大,單表千萬級別的,需要分庫分表,本文主要介紹了Java中ShardingSphere分庫分表實(shí)戰(zhàn),感興趣的可以了解一下2021-09-09
Java8中Optional操作的實(shí)際應(yīng)用
Optional類是一個可以為null的容器對象,如果值存在則isPresent()方法會返回true,調(diào)用get()方法會返回該對象,下面這篇文章主要給大家介紹了關(guān)于Java8中Optional操作實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下2022-02-02
Spring Boot 和 Spring 到底有啥區(qū)別你知道嗎
Spring Boot框架的核心就是自動配置,只要存在相應(yīng)的jar包,Spring就幫我們自動配置。接下來通過本文給大家介紹Spring與Spring boot的區(qū)別介紹,非常不錯,需要的朋友參考下吧2021-08-08
java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07
java輸入時如何通過回車(enter)來結(jié)束輸入
這篇文章主要介紹了java輸入時如何通過回車(enter)來結(jié)束輸入,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
MyBatis實(shí)現(xiàn)三級樹查詢的示例代碼
在實(shí)際項目開發(fā)中,樹形結(jié)構(gòu)的數(shù)據(jù)查詢是一個非常常見的需求,比如組織架構(gòu)、菜單管理、地區(qū)選擇等場景都需要處理樹形數(shù)據(jù),本文將詳細(xì)講解如何使用MyBatis實(shí)現(xiàn)三級樹形數(shù)據(jù)的查詢,需要的朋友可以參考下2024-12-12

