播放JSON在deserialise上丢失时间信息

时间:2016-05-30 15:09:43

标签: json scala playframework

我有以下代码:

val test = Json.parse("""{"someDate":"1998-10-18T10:00:00+03:00"}""")
val aDate = (test \ "someDate").as[Date]
val activationDate = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ").parseDateTime("1998-10-18T10:00:00+03:00").toDate
assert(aDate.compareTo(activationDate) == 0)

但是日期永远不会比较,实际上'aDate'已经失去了它的时间信息。这里的任何人都有答案要我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如您所见,从json格式化时,日期信息会丢失。虽然我不知道为什么,但我可以提供替代解决方案来解决您的问题。我们可以知道从json解析的string将保留其所有信息。所以你可以将json数据解析为String而不是Date,然后将解析后的String格式化为你想要的。代码如下:

val aDateString = (test \ "someDate").as[String]//not Date

然后,将其格式化为通常的String to Date

val aDate = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ").
            parseDateTime(aDateString).toDate//parse the string parsed from json

此时,

assert(aDate.compareTo(activationDate) == 0)

将返回正确的答案。

因为从json解析aDateString没有丢失信息,你可以实现你想要的东西

也许,我的解决方案不是最好的,但它可以保证日期信息不会丢失

The blog也许可以帮到你

祝你好运