JsonProperty注解的access属性

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方法自动决定是否允许序列化和反序列化。
相关推荐
小雅痞21 分钟前
[Java][Leetcode simple] 28. 找出字符串中第一个匹配项的下标
java·开发语言·leetcode
likerhood26 分钟前
java中的不可变类(Immutable)
java·开发语言
yaoxin5211231 小时前
389. Java IO API - 获取文件名
java·开发语言·python
Wang15302 小时前
Java排序
java
逸风尊者2 小时前
XGBoost模型工程使用
java·后端·算法
一嘴一个橘子2 小时前
MP 自定义业务方法 (二)
java
低客的黑调2 小时前
MyBatis-Plus-从 CRUD 到高级特性
java·servlet·tomcat
就像风一样抓不住2 小时前
Java 手机号校验工具类
java
凤山老林2 小时前
26-Java this 关键字
java·开发语言
焦糖玛奇朵婷3 小时前
解锁扭蛋机小程序的五大优势
java·大数据·服务器·前端·小程序