Jackson ObjectMapper转换后Date字段返回时间戳而非日期格式问题
解决JSON转对象排序+Date字段返回格式问题
嘿,这个问题我刚好碰到过,分两部分来帮你搞定:
一、JSON转User对象并按日期排序Feedback列表
首先确保你的实体类结构和JSON字段对应,比如:
public class User { private Feedbacks feedbacks; // getter/setter } public class Feedbacks { private ArrayList<Feedback> feedbackList; // getter/setter } public class Feedback { private Date date; // 其他字段 + getter/setter }
1. JSON转User对象
用ObjectMapper直接反序列化就行:
ObjectMapper objectMapper = new ObjectMapper(); // 如果JSON字段和实体类字段名有差异,可通过@JsonProperty注解映射 User user = objectMapper.readValue(yourDatabaseJsonString, User.class);
2. 按日期排序Feedback列表
拿到User里的Feedbacks后,对feedbackList排序,两种方式任选:
Feedbacks feedbacks = user.getFeedbacks(); if (feedbacks != null && feedbacks.getFeedbackList() != null) { // 方式1:用Collections.sort(升序,降序就调换o2和o1的位置) Collections.sort(feedbacks.getFeedbackList(), (o1, o2) -> o1.getDate().compareTo(o2.getDate()) ); // 方式2:用Stream API(更简洁易读) List<Feedback> sortedList = feedbacks.getFeedbackList() .stream() .sorted(Comparator.comparing(Feedback::getDate)) .collect(Collectors.toList()); feedbacks.setFeedbackList(sortedList); }
二、解决Angular前端接收到Date为时间戳的问题
默认情况下Jackson会把Date序列化为时间戳,有三种方案可选:
方案1:后端全局配置Jackson日期格式(推荐)
如果是Spring Boot项目,直接在application.properties(或yml)里加:
# 指定日期格式 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # 设置时区,根据业务调整,比如东八区填GMT+8 spring.jackson.time-zone=GMT+8
这样所有返回的Date字段都会变成指定格式的字符串,前端直接使用即可。
方案2:实体类字段上加注解单独配置
如果只想给某个Date字段指定格式,在Feedback类的date字段上加@JsonFormat:
public class Feedback { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date date; // 其他字段和getter/setter }
方案3:前端Angular处理时间戳
如果不想修改后端,前端可以把时间戳转成日期对象,甚至格式化显示:
// 工具方法:时间戳转Date对象 convertTimestampToDate(timestamp: number): Date { return new Date(timestamp); } // 使用DatePipe格式化显示(需在组件中注入DatePipe) import { DatePipe } from '@angular/common'; // 示例:把时间戳转成指定格式字符串 formattedDate = this.datePipe.transform(feedback.date, 'yyyy-MM-dd HH:mm:ss');
总结
优先推荐方案1,全局配置日期格式能保证前后端数据格式统一,减少后续维护成本。排序部分用Stream API更简洁易读~
内容的提问来源于stack exchange,提问作者ps2090
相关产品推荐
相关产品推荐

