[英]Serializing and deserializing LocalDateTime into JSON in RFC 3339 format in java with Gson
我目前正在嘗試將一些包含時間戳的數據庫對象存儲到圖形數據庫 (dgraph) 中。 我想使用 JSON 輕松獲取日期和時間信息並將其存儲在圖中的日期時間節點中,但該圖僅接受以RFC 3339格式格式化並帶有可選時區的數據(例如2006-01-02T15:04:05.999999999
)。
我一直在使用 Gson 進行序列化和反序列化,其他數據類型工作正常,但嘗試查詢日期返回null
。 我試過使用setDateFormat
但這似乎沒有改變任何東西。 我目前將時間戳存儲在LocalDateTime
類中,但可以根據需要進行更改。
如何強制 Gson 對我的時間戳使用正確的格式? 它目前將它們置於這種格式
"start":{
"date":{"year":2011,"month":1,"day":2},
"time":{"hour":10,"minute":4,"second":0,"nano":0}
}
我是序列化和 JSON 的新手,所以任何指針都將不勝感激。
我已經意識到 gson 似乎將我的時間戳分成兩個單獨的數據塊,我如何強制它以正確的格式將它們保存在一起? 我需要類型適配器嗎? (我不知道他們是如何工作的)
如果您對使用庫沒問題, Joda Time提供了一個簡單的解決方案:
序列化
DateTime dt = new DateTime(2006, 1, 2, 15, 4, 5, 999, DateTimeZone.UTC);
System.out.println(dt);
-------- OUTPUT --------
2006-01-02T15:04:05.999Z
反序列化
DateTime dt = DateTime.parse("2006-01-02T15:04:05.999Z");
System.out.println(dt);
-------- OUTPUT --------
2006-01-02T15:04:05.999Z
至於標准庫:處理時區時,您將使用ZonedDateTime
而不是LocalDateTime
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.