@JsonIgnore对Date类型不生效

对于@JsonIgnore注解,它通常用于忽略对象的某个属性(字段)在序列化和反序列化过程中的处理。然而,对于 'Date' 类型的属性,@JsonIgnore注解可能不会直接生效,因为 'Date' 类型的序列化和反序列化通常由默认的日期序列化器和反序列化器处理。

如果你想要在序列化和反序列化过程中忽略 'Date' 类型的属性,可以考虑以下几种方法:

java 复制代码
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import java.util.Date;

@Data
public class HolidayRequest {
    private String id;
    private String processInstanceId;

    private Date createTime;

    private Date updateTime;

    private String applicant;
    private Integer days;
    private String status;

    @JsonIgnore
    public Date getCreateTime() { return createTime; }

    @JsonIgnore
    public Date getUpdateTime() { return updateTime; }

    // === 可选:如果需要展示格式化时间 ===
    public String getCreateTimeFormatted() {
        if (createTime != null) {
            return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
        }
        return null;
    }

    public String getUpdateTimeFormatted() {
        if (updateTime != null) {
            return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
        }
        return null;
    }
}
java 复制代码
@Resource
private ObjectMapper objectMapper;

@Test
public void test1() throws JsonProcessingException {
    HolidayRequest request = new HolidayRequest();
    request.setId("1");
    request.setApplicant("张三");
    request.setDays(3);
    request.setCreateTime(new Date());
    request.setUpdateTime(new Date());

    String json = objectMapper.writeValueAsString(request);
    System.out.println("序列化结果: " + json);
}
java 复制代码
序列化结果:
{
    "id": "1",
    "processInstanceId": null,
    "applicant": "张三",
    "days": 3,
    "status": null,
    "createTimeFormatted": "2025-11-27 16:40:17",
    "updateTimeFormatted": "2025-11-27 16:40:17"
}

为什么这样有效?

  1. 直接控制序列化:Jackson 主要通过 getter 方法进行序列化
  2. 不影响反序列化:setter 方法没有注解,仍可接收数据
  3. 数据库操作正常:JPA/Hibernate 仍能正常访问字段
相关推荐
承渊政道1 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(开源大模型ChatGLM高级定制化应用实战)
人工智能·pytorch·python·llm·模型微调·glm
Joy T2 小时前
Agent 确定性上下文设计:从 Prompt 参数注入到能力分层
java·开发语言·微服务·架构·prompt·agent context
专注仿真6 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
Best-Wishes6 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停7 小时前
自动化测试(java)
java·开发语言·selenium·自动化
Smoothcloud润云7 小时前
PyTorch大模型权重加载与启动耗时优化实战:定位磁盘、内存与显存瓶颈
人工智能·pytorch·python·深度学习·gpu算力
databook7 小时前
从循环到向量化:NumPy提速的7个关键思维
python·数据分析·numpy
棉猴8 小时前
玩游戏学Python1-Python和pgzero库的安装
python·pygame·玩游戏·pgzero·pgzrun
诺伦8 小时前
GEO优化数据实证:78%引用流向官网的机制拆解与小品牌三步管线实战教程 | RiseClaw玄策
python·seo·geo·内容营销·ai搜索
oooost8 小时前
pytorch学习笔记1
python·学习方法