首页 > 其他分享 >JackSon的忽略注解

JackSon的忽略注解

时间:2024-11-05 21:09:43浏览次数:2  
标签:JackSon String firstName lastName public 忽略 注解 id

JackSon的忽略注解

在本教程中,我将通过一个示例向您展示如何在使用 Jackson @JsonIgnore、@JsonIgnoreProperties 和 @JsonIgnoreType注释将对象序列化为 JSON 时忽略某些字段。这些注解用于忽略 JSON 序列化和反序列化中的逻辑属性

@JsonIgnore用于忽略序列化和反序列化中使用的逻辑属性。@JsonIgnore 可用于 setter、getter 或字段。

@JsonIgnoreProperties忽略 JSON 序列化和反序列化中的指定逻辑属性。它在类级别进行了注释。

@JsonIgnoreType在类级别进行了注释,它忽略了整个类。

Maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

用@JsonIgnoreProperties 在类级别忽略字段
我们可以在类级别忽略特定字段,使用@JsonIgnoreProperties注释并指定字段:

package net.javaguides.jackson.ignore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(value = {
    "id",
    "firstName"
})
public class CustomerDTO {
    private final String id;
    private final String firstName;
    private final String lastName;
 
    public CustomerDTO(String id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }
 
    public String getId() {
        return id;
    }
 
    public String getFirstName() {
        return firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
}

请注意,我们忽略了CustomerDTO的两个字段****“id”“firstName” ,只打印了“lastName”

使用@JsonIgnore 在字段级别忽略字段

package net.javaguides.jackson.ignore;
 
import com.fasterxml.jackson.annotation.JsonIgnore;
 
public class CustomerDTO {
 
    @JsonIgnore
    private final String id;
 
    @JsonIgnore
    private final String firstName;
    private final String lastName;
 
    public CustomerDTO(String id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }
 
    public String getId() {
        return id;
    }
 
    public String getFirstName() {
        return firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
}

请注意,我们使用@JsonIgnore注释忽略了CustomerDTO的两个字段****“id”“firstName” ,并且只打印了“lastName”

使用@JsonIgnoreType 按类型忽略所有字段

package net.javaguides.jackson.ignore;
 
import com.fasterxml.jackson.annotation.JsonIgnoreType;
 
public class UserDTO {
 
    public int id;
    public Name name;
 
 
    public UserDTO(int id, Name name) {
        super();
        this.id = id;
        this.name = name;
    }
 
    @JsonIgnoreType
    public static class Name {
        public String firstName;
        public String lastName;
        public Name(String firstName, String lastName) {
            super();
            this.firstName = firstName;
            this.lastName = lastName;
        }
    }
}

请注意,使用@JsonIgnoreType注释会忽略 Name 类字段。

标签:JackSon,String,firstName,lastName,public,忽略,注解,id
From: https://www.cnblogs.com/21CHS/p/18528853

相关文章

  • 为什么同一个类中,不能一个方法调另一个方法,注解会失效?
    在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解是不会生效的。原因:spring在扫描bean的时候会扫描方法上是否包含@Async注解,如果包含,spring会为这个bean动态地生成一个子类(即代理类,proxy),代理类是继承原来那个bean的。此时,当这个有注解的方法被......
  • HarmonyOS 开发实践——基于自定义注解和代码生成实现路由框架
    ......
  • TypeScript中的类型注解、Interface接口、泛型
    一、认识TypeScript1.概述TypeScript是具有类型语法的JavaScript,是一门强类型的编程语言。它是JavaScript的超集(js中的所有元素都属于ts),这意味着任何有效的JavaScript代码本身也是有效的TypeScript代码。2.优点静态类型检查TypeScript在编译阶段就可以检查类......
  • @DS注解方式springboot多数据源配置及失效场景解决
    1.使用教程导入依赖<!--多数据源--> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.5.0</version> </dependency>123456配置数据源......
  • Mybatis使用注解方式实现批量更新、批量新增
    记得数据源配置allowMultiQueries=true&不然会报错->添加链接描述@目录举例说明@Update批量更新@insert批量新增举例说明spring.datasource.url=jdbc:mysql://IP:端口/geespace_bd_platform_dev?allowMultiQueries=true&characterEncoding=UTF-8&serverTimezone=Asia/Shang......
  • Mybatis参数传递&注解开发
    参数传递点击查看代码/*MyBatis参数封装:*单个参数:1.POJO类型:直接使用,属性名和参数占位符名称一致2.Map集合:直接使用,键名和参数占位符名称一致3.Collection:封装为Map集合,可以使用@Param注解,替换Map集......
  • 后台管理系统的通用权限解决方案(七)SpringBoot整合SpringEvent实现操作日志记录(基于
    1SpringEvent框架除了记录程序运行日志,在实际项目中一般还会记录操作日志,包括操作类型、操作时间、操作员、管理员IP、操作原因等等(一般叫审计)。操作日志一般保存在数据库,方便管理员查询。通常的做法在每个请求方法中构建审计对象,并写入数据库,但这比较繁琐和冗余。更简......
  • 实现注解校验Dto字段是否为空
    一、背景我们用json对象作为接收参数的包装器,最后要转化为dto进行业务操作,操作之前要做非空校验,我们可以实现2个注解来实现这个通用的操作。@NotNullField@CheckNull二、思路1.实现@NotNullField注解,注解标记在dto字段名上面@Target(ElementType.FIELD)//目标为字段@Rete......
  • @Transactional注解管理事务和手动提交事务
    1、@Transacational注解(1)注解里面的属性:propagation:用于设置事务传播属性,该属性类型为Propagation枚举,默认是Propagation.REQUIREDissolation:用于设置事务的隔离级别,该属性类型为Isolation枚举,默认是Isolation.DEFAULTreadOnly:用于设置该方法对数据库的操作是否是只读......
  • 主动写入流对@ResponseBody注解的影响
    作者:京东零售柯贤铭问题回溯2023年Q2某日运营反馈一个问题,商品系统商家中心某批量工具模板无法下载,导致功能无法使用(因为模板是动态变化的)商家中心报错(JSON串):{"code":-1,"msg":"失败"} 负责的同事看到失败后立即与我展开讨论(因为不是关键业务,所以不需要回滚,修复即可),我们发......