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忽略字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java导出多个excel表打包到zip文件中供客户端另存为窗口下载实现方法
最近的项目有一个导出汇总数据的要求,考虑到用户软件的差异,所以要分别导出xls以及xlsx并且打包提供下载,下面这篇文章主要给大家介绍了关于Java导出多个excel表打包到zip文件中供客户端另存为窗口下载的实现方法,需要的朋友可以参考下2023-12-12深入Spring Boot之ClassLoader的继承关系和影响
这篇文章主要介绍了深入Spring Boot之ClassLoader的继承关系和影响,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-06-06idea中MavenWeb项目不能创建Servlet的解决方案
这篇文章主要介绍了idea中MavenWeb项目不能创建Servlet的解决方案,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-02-02Java中的SynchronousQueue阻塞队列及使用场景解析
这篇文章主要介绍了Java中的SynchronousQueue阻塞队列及使用场景解析,SynchronousQueue 是 Java 中的一个特殊的阻塞队列,它的主要特点是它的容量为0,这意味着 SynchronousQueue不会存储任何元素,需要的朋友可以参考下2023-12-12
最新评论