gpt4 book ai didi

java - 使用 Jackson Json 将对象序列化为字符串后日期发生变化

转载 作者:行者123 更新时间:2023-12-01 10:32:03 24 4
gpt4 key购买 nike

我有点困惑。我需要将一个对象序列化为 json 字符串。我使用 Jackson 作为库。

我的 Pojo 类 Stage 有一个属性 fromDate 及其 util.date

public class Stage {

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy", timezone="UTC+1")
private Date fromDate;
...

序列化之前,fromDate 的值为:Wed May 11 00:00:00 CEST 2016

我的序列化方法如下所示:

 public static String serialize(Stages stages) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(stages);
return s;
}

但是在序列化我的对象之后,json 字符串中的 dateFrom 具有以下值: ..."fromDate":"10.05.2016"... 。所以日期是错误的。

我使用了@JsonFormat 模式,并使用ObjectMapper 配置进行了尝试。

public static String serialize(Stages stages) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
SimpleDateFormat dateFormat = new SimpleDateFormat(Util.SDF_dd_mm_yyyy);
objectMapper.setDateFormat(dateFormat);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC+1"));
String s = objectMapper.writeValueAsString(stages);
return s;
}

但日期不是我预期的日期:..."fromDate":"11.05.2016"...

我做错了什么?

最佳答案

我认为这只是另一个时区问题。序列化日期看起来像是 UTC(?),所以您看到的 10.05 实际上是正确的,因为 2016-11-05 00:00 UTC+1 实际上是 2016-10-05 23:00 UTC..

您可能应该尝试调整读取此序列化值的代码,以考虑日期序列化所在的时区。

关于java - 使用 Jackson Json 将对象序列化为字符串后日期发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com