前言
在 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
private 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 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核心注解的资料请关注代码网其它相关文章!
发表评论