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方法自动决定是否允许序列化和反序列化。
相关推荐
Sayai8 小时前
MCP Server 开发实战:Spring AI 把后端日志查询暴露给 AI Agent(7 条设计原则与踩坑实录)
java·人工智能·ai agent·spring ai·mcp
大牧师8 小时前
Mybatis 框架教程
java·数据库·mybatis·数据持久化·orm
SunnyDays10118 小时前
Java 合并 PDF 文件:完整合并、指定页面合并与流合并
java·开发语言·合并pdf
源码宝9 小时前
云HIS系统源码,HIS全套源码,支持监管系统对接与二次开发
java·源码·电子病历·云his系统·程序代码·全套源码
萧瑟余晖9 小时前
Spring MVC拦截器异常处理与跨域详解
java·spring·mvc
泡茶喝茶写代码9 小时前
A股量化数据工程:从 REST 接口到策略信号(第 17 篇):创新高与新低扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
栗子~~9 小时前
java - logstash-logback-encoder 集成 demo
java·开发语言·logback
hmb↑9 小时前
高并发与高可用技术经验
java·spring
楚识科技9 小时前
XML配置OCR接入实战:自定义OCR模板从字段定义到API调用全流程
xml·java·ocr