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方法自动决定是否允许序列化和反序列化。
相关推荐
Mr.朱鹏2 小时前
分布式-redis集群架构
java·redis·分布式·后端·spring·缓存·架构
予枫的编程笔记2 小时前
【面试专栏|Java并发编程】Java并发锁对比:synchronized与Lock,底层原理+适用场景详解
java·synchronized·java面试·java并发编程·并发锁·面试干货·lock接口
醇氧2 小时前
PowerPoint 批量转换为 PDF
java·spring boot·spring·pdf·powerpoint
java1234_小锋2 小时前
Java高频面试题:RabbitMQ如何实现消息的持久化?
java·开发语言
爱打代码的小林2 小时前
用 LangChain 解析大模型输出
java·python·langchain·大模型
_日拱一卒2 小时前
LeetCode(力扣):只出现一次的数字
java·数据结构·算法
小箌2 小时前
JavaWeb_02
java·数据库·maven·mybatis
gxy1990262 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
阿杰真不会敲代码2 小时前
Elasticsearch 入门到实战:安装 + CRUD + 查询
java·大数据·elasticsearch·搜索引擎