我試圖序列化,然後反序列化使用傑克遜Joda DateTime對象,但它並沒有完全反序列化對象。它看起來像時區信息丟失。傑克遜從反序列化JodaTime失去日期的時間偏移
此代碼:
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上看到了一些關於這個問題的問題,但沒有一個具體處理這方面的問題。
我使用約達2.1和2.1傑克遜
因此,有一個專門處理Joda對象的整個單獨模塊,但它儘可能以最簡單的方式進行序列化,無法保留關鍵信息... 這是一種恥辱。看起來我必須寫我自己的解串器。 – Vysarat
不是抱怨,你真的試圖聯繫模塊的作者,提供你的幫助嗎?對SO進行抱怨並不是與OSS項目合作的有效方式。 – StaxMan