You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jackson在Java中将JSON长整型转换为日期格式?

Jackson自动转换时间戳为可读日期格式的实现方案

当然可以实现,下面是两种常用方案,分别对应转成Date类型和指定格式的String类型:

1. 转换为Java Date类型

直接修改实体类的字段类型为Date,配合Jackson的@JsonFormat注解指定时间戳的格式即可:

public class Plugins {
    private String id;
    private String name;

    @JsonProperty("created_at")
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    private Date createdAt;
}

@JsonFormat(shape = JsonFormat.Shape.NUMBER)会告诉Jackson:这个Date字段对应的JSON值是数字类型的时间戳,解析时会自动把长整型数值转换成Date对象。

2. 转换为指定格式的String类型

如果需要直接得到可读的日期字符串,有两种方式:

方式一:通过注解直接配置

把字段类型改成String,同时在@JsonFormat里指定日期格式和时区:

public class Plugins {
    private String id;
    private String name;

    @JsonProperty("created_at")
    @JsonFormat(shape = JsonFormat.Shape.NUMBER, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private String createdAt;
}

其中pattern可以根据需求自定义(比如yyyy/MM/dd),timezone设置为业务需要的时区(比如东八区)。

方式二:全局配置ObjectMapper

如果多个实体类都有类似需求,可以全局配置ObjectMapper,统一处理时间戳的转换:

ObjectMapper objectMapper = new ObjectMapper();
// 关闭纳秒级时间戳解析(默认是开启的,大部分场景用毫秒级时间戳)
objectMapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false);
// 设置全局日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
objectMapper.setDateFormat(sdf);

配置后,所有对应Date类型的字段都会自动解析为Date对象,若字段是String类型,会直接转换成指定格式的日期字符串。

内容的提问来源于stack exchange,提问作者Evil Washing Machine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:31:01