1. 实体类
java
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("test_user")
public class TestUser implements Serializable {
private String id;
private String name;
private String age;
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createDate;
}
2. 示例
java
import cn.cjc.enity.TestUser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws JsonProcessingException {
TestUser testUser = new TestUser();
testUser.setId("55");
testUser.setName("55");
testUser.setAge("55");
testUser.setCreateDate(new Date());
// 使用 Jackson ObjectMapper 序列化
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(testUser);
System.out.println(jsonStr);
// 使用 Jackson ObjectMapper 反序列化
TestUser obj = objectMapper.readValue(jsonStr, TestUser.class);
System.out.println(obj);
}
}
- @JsonProperty(access = JsonProperty.Access.READ_ONLY)
- 序列化(对象转 JSON)时,createDate会被包括在JSO 中。
- 反序列化(JSON 转对象)时,createDate将会被忽略,不能通过 JSON 中的值来设置该字段的值。
shell
{"id":"55","name":"55","age":"55","createDate":"2025-09-25 01:08:07"}
TestUser(id=55, name=55, age=55, createDate=null)
- @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
- 序列化时,会导致 createDate不被序列化到 JSON 输出。
- 反序列化时,JSON中没有 createDate 字段,它将保持 null。
shell
{"id":"55","name":"55","age":"55"}
TestUser(id=55, name=55, age=55, createDate=null)
- @JsonProperty(access = JsonProperty.Access.AUTO)
- 序列化、反序列化随机
- @JsonProperty(access = JsonProperty.Access.READ_WRITE)
- Jackson 会根据字段的getter和setter方法自动决定是否允许序列化和反序列化。