使用Jackson Json将Object序列化为String后更改日期

时间:2016-01-27 10:29:20

标签: java json serialization jackson

我有点困惑。我需要将一个Object序列化为一个json String。我使用bin作为库。

我的Pojo课程Jackson有一个属性Stage,其fromDate

util.date

在序列化之前,fromDate具有以下值:public class Stage { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd.MM.yyyy", timezone="UTC+1") private Date fromDate; ...

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

Wed May 11 00:00:00 CEST 2016

但序列化我的Object之后,json String中的dateFrom具有以下值:   public static String serialize(Stages stages) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); String s = objectMapper.writeValueAsString(stages); return s; } 。所以日期错了。

我使用了..."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; }

我错了什么?

1 个答案:

答案 0 :(得分:1)

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

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