[英]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.