java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java Jackson核心注解

Java Jackson核心注解使用详解

作者:Stay Passion

这篇文章主要介绍了Java Jackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射、格式转换与数据过滤,需要的朋友可以参考下

前言

在 Java 后端开发中,Jackson 是最常用的 JSON 序列化/反序列化工具之一。Jackson 提供了一系列功能强大的注解,用于精确控制 JSON 与 Java 对象之间的映射逻辑。本文将深入讲解常用的几个核心注解:

一、@JsonProperty-指定JSON字段名

默认情况下,Jackson 使用 Java 字段名作为 JSON 字段名。但在前后端字段命名不一致时,可以使用 @JsonProperty 显式指定:

public class User {
    @JsonProperty("user_name")
    private String username;
    // getter/setter
}

输出 JSON:

{
  "user_name": "Tom"
}

二、@JsonIgnore-忽略字段

@JsonIgnore 用于在序列化或反序列化过程中跳过某些字段,比如密码、内部字段等:

public class Account {
    private String username;
    @JsonIgnore
    private String password;
    // getter/setter
}

输出 JSON 不包含 password 字段。

三、@JsonInclude-控制是否输出null或空字段

通过 @JsonInclude 可以控制字段是否输出。常见选项:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Product {
    private String name;
    private String description;
}

description 为 null 时不会出现在 JSON 中。

也可以作用于类、字段或全局配置:

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<String> tags;

四、@JsonFormat-格式化时间

Java 中的日期类型默认序列化为时间戳。通过 @JsonFormat 可以指定格式和时区:

public class Event {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date eventTime;
}

输出 JSON 中的日期格式为:"2025-05-06 16:00:00"

五、@JsonCreator/@JsonValue-自定义序列化与反序列化

1. @JsonCreator:构造方法反序列化

当对象没有默认构造器,或你希望控制反序列化逻辑时使用:

public class Currency {
    private String code;
    @JsonCreator
    public Currency(@JsonProperty("code") String code) {
        this.code = code;
    }
    public String getCode() { return code; }
}

2. @JsonValue:自定义序列化值

如果你希望整个对象在序列化时只输出某个字段,可以使用 @JsonValue:

public class Status {
    private final String value;
    public Status(String value) {
        this.value = value;
    }
    @JsonValue
    public String getValue() {
        return value;
    }
}

序列化后将只输出字符串:

"ACTIVE"

六、完整示例

public class User {
    @JsonProperty("user_name")
    private String username;
    @JsonIgnore
    private String password;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String email;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    // getters and setters
}

七、实战项目结构与代码仓库

示例接口返回序列化结果

@RestController
public class UserController {
    @GetMapping("/user")
    public User getUser() {
        User user = new User();
        user.setUsername("alice");
        user.setPassword("123456");
        user.setEmail(null);
        user.setBirthday(new Date());
        return user;
    }
}

八、总结

Jackson 提供的注解使我们可以精准控制对象与 JSON 的映射行为。合理使用 @JsonProperty@JsonIgnore@JsonInclude 等注解,不仅可以满足前后端字段差异需求,还能提升代码的可读性与可维护性。

这些注解在实际开发中广泛应用,是每一位 Java 开发者都应掌握的重要工具。如果你希望构建更强大的 JSON 数据模型控制体系,Jackson 注解体系是你的得力助手。

以上就是Java Jackson核心注解使用详解的详细内容,更多关于Java Jackson核心注解的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文