本文主要是介绍Java Jackson核心注解使用详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,Jackson核心注解用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射...
前言
在 Java 后端开发中,Jackson 是最常用的 JSON 序列化/反序列化工具之一。Jackson 提供了一系列功能强大的注解,用于精确控制 JSON 与 Java 对象之间的映射逻辑。本文将深入讲解常用的几个核心注解:
@JsonProperty
:指定字段的 JSON 名称@JsonIgnore
:忽略字段序列化/反序列化@JsonInclude
:控制字段是否参与序列化(如 null、空集合等)@JsonFormat
:格式化日期时间@JsonCreator
/@JsonValue
:自定义对象的序列化/反序列化逻辑
一、@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
privaandroidte String password;
// getter/setter
}
输出 JSON 不包含 password
字段。
三、@JsonInclude-控制是否输出null或空字段
通过 @JsonInclude
可以控制字段是否输出。常见选项:
Include.NON_NULL
:忽略 null 值Include.NON_EMPTY
:忽略 null、空字符串、空集合等
@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 Standroidring 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 usejsr = new User(); user.setUsername("alice"); user.setPassword("123456"); user.setEmail(null); user.setBirthday(new Date()); return user; } }
八、总结
Jackson 提供的注解使我们可以精准控制对象与 JSON 的js映射行为。合理使用 @JsonProperty
、@JsonIgnore
、@JjavascriptsonInclude
等注解,不仅可以满足前后端字段差异需求,还能提升代码的可读性与可维护性。
这些注解在实际开发中广泛应用,是每一位 Java 开发者都应掌握的重要工具。如果你希望构建更强大的 JSON 数据模型控制体系,Jackson 注解体系是你的得力助手。
以上就是Java Jackson核心注解使用详解的详细内容,更多关于Java Jackson核心注解的资料请关注China编程(www.chinasem.cn)其它相关文章!
这篇关于Java Jackson核心注解使用详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!