Spring:jackson-annotaions注解大全

文章目录

一、介绍

jackson-annotations 是 Jackson 库的一部分,它提供了一系列注解,用于控制 Java 对象与 JSON 之间的序列化和反序列化过程。

二、@JsonProperty

用于指定 Java 类的属性名与 JSON 中的字段名之间的映射关系。

复制代码
public class User {  
    @JsonProperty("user_name")  
    private String name;  

    // getters and setters  
}

在上面的例子中,Java 对象的 name 属性将被序列化为 JSON 字段 user_name。

三、@JsonIgnore

用于指定某个 Java 类的属性在序列化为 JSON 时被忽略。

复制代码
public class User {  
    private String name;  

    @JsonIgnore  
    private String password;  

    // getters and setters  
}

在上面的例子中,password 属性在序列化为 JSON 时将被忽略。

四、@JsonInclude

用于指定在序列化时哪些值应该被包含。例如,可以使用 @JsonInclude(Include.NON_NULL) 来只包含非空值。

复制代码
@JsonInclude(Include.NON_NULL)  
public class User {  
    private String name;  
    private String email;  

    // getters and setters  
}

在上面的例子中,如果 email 为 null,则不会被包含在序列化的 JSON 中。

五、@JsonFormat

用于自定义日期和时间的格式。

复制代码
public class Event {  
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")  
    private Date eventDate;  

    // getters and setters  
}

在上面的例子中,eventDate 属性将按照指定的日期时间格式进行序列化和反序列化。

六、@JsonCreator 和 @JsonProperty (在构造函数中)

用于自定义反序列化时的构造函数。

复制代码
public class User {  
    private String name;  
    private int age;  

    @JsonCreator  
    public User(@JsonProperty("user_name") String name, @JsonProperty("user_age") int age) {  
        this.name = name;  
        this.age = age;  
    }  

    // getters and setters  
}

在上面的例子中,我们使用了一个带有 @JsonCreator 注解的构造函数,并使用 @JsonProperty 注解来指定 JSON 字段与 Java 构造函数参数之间的映射关系。

七、@JsonTypeName 和 @JsonTypeInfo

用于处理多态类型。

复制代码
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")  
@JsonTypeName("employee")  
public class Employee {  
    // ...  
}  

public class Manager extends Employee {  
    // ...  
}

在上面的例子中,Employee 和 Manager 类都可以被序列化为 JSON,并且包含一个 type 字段来指示对象的实际类型。反序列化时,可以根据这个 type 字段来创建正确的对象实例。

八、@JsonIgnoreProperties

  • 作用:在序列化或反序列化时忽略Java Bean中的某些属性。
  • 示例:@JsonIgnoreProperties({"propertyName1", "propertyName2"})
  • 注意:这是一个类注解,可以指定多个要忽略的属性名。

九、@JsonSerialize

  • 作用:用于自定义属性的序列化方式。
  • 示例:配合自定义的序列化器使用,如@JsonSerialize(using = CustomSerializer.class)
  • 注意:可以作用于属性或getter方法上。

十、@JsonDeserialize

  • 作用:用于自定义属性的反序列化方式。
  • 示例:配合自定义的反序列化器使用,如@JsonDeserialize(using = CustomDeserializer.class)
  • 注意:可以作用于属性或setter方法上。
相关推荐
霸道流氓气质1 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
frjc5 小时前
Spring AI 高级实战:ChatMemory、Tool Calling 与 MCP 架构解析
人工智能·spring·架构
T量子永生6 小时前
Unisoc(紫光展锐) Kernel 6.18 DDK 编译框架详解
linux·运维·spring
麻瓜code7 小时前
Spring AI 全模块 API 字典一览(1.1.0 版)
人工智能·windows·spring
养军博客8 小时前
Spring Security 4.x / 5.x / 6.x 配置全对比:前后端不分离与前后端分离
java·后端·spring·springsecurity
java_nnnn9 小时前
Spring IoC & DI 从入门到理解:控制反转、依赖注入与 Bean 管理详解
数据库·sql·spring
骑着蜗牛撵大象32710 小时前
Spring Boot 4.1 + Spring AI 2.0:RAG 供文、图谱供关系、MCP 供工具的 Java Agent 平台
java·spring boot·spring·微服务·知识图谱·rag·mcp
CoderYanger11 小时前
Java EE 进阶:6.SpringBoot 配置文件(第二弹)
java·spring boot·spring·面试·职场和发展·java-ee·程序员创富
m0_6399069411 小时前
SpringBoot 实现大模型统一调度网关|对接 OpenAI、Claude 协议差异与适配方案
java·spring boot·spring