我正在尝试使用 Jackson 序列化然后反序列化 Joda DateTime 对象,但它并没有完全反序列化该对象。看起来时区信息丢失了。
这段代码:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS , false);
DateTime dt = DateTime.now();
String j = mapper.writeValueAsString(dt);
DateTime dt2 = mapper.readValue(j, DateTime.class);
System.out.println("json: " + j);
System.out.println("eq? " + (dt.equals(dt2)));
System.out.println("dates:\n" + dt + "\n" + dt2);
输出这个:
json: "2013-10-18T14:10:52.458-07:00"
eq? false
dates:
2013-10-18T14:10:52.458-07:00
2013-10-18T21:10:52.458Z
这是设计使然吗?除了编写自己的序列化器/反序列化器之外,我能在这里做些什么吗?我在 SO 上看到了一些关于此的问题,但没有一个专门针对此方面。
我正在使用 Joda 2.1 和 Jackson 2.1