Jackson忽略字段实现对字段进行序列化和反序列化
作者:qq_35987023
在使用 Jackson 进行序列化和反序列化时,有时候需要对某些字段进行过滤,以便在 JSON 数据中不包含某些敏感信息,下面就一起来了解一下Jackson忽略字段实现对字段进行序列化和反序
在使用 Jackson 进行序列化和反序列化时,有时候需要对某些字段进行过滤,以便在 JSON 数据中不包含某些敏感信息
@JsonInclude
可以标记在字段上
@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
可以标记在类上
@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类进行序列化和反序列时, // 字段child被忽略 public class Test { private String name; private TestChild child; }
JsonAutoDetect
// 根据访问权限修饰符,对字段是否进行序列化和反序列化 @JsonAutoDetect // 只对访问权限修饰符为public的字段进行序列化和反序列化 @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和默认的package access时不能被自动识别的) PUBLIC_ONLY // public的 NONE // 禁止自动识别 DEFAULT // 默认的,用于继承父类的自动识别的范围
参考链接
https://blog.csdn.net/weixin_45427648/article/details/129645380
到此这篇关于Jackson忽略字段实现对字段进行序列化和反序列化的文章就介绍到这了,更多相关Jackson忽略字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!