2016-05-30 78 views
0

时间的信息,我有以下代码:播放JSON失去对deserialise

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) 

但绝不日期比较,实际上是“A日期”已经失去了它的时间信息。这里的任何人都有答案来解决这个问题?

回答

1

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

val aDateString = (test \ "someDate").as[String]//not 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) 

将返回正确的答案。

因为aDateString从JSON解析不丢失信息,你可以实现你想要

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

The blog也许可以帮到你

祝你好运

+0

看起来没有什么可以做的。 我仍然觉得奇怪,它不能按预期工作 –

+0

@TomdeVroomen是的,这是奇怪的,我已经搜索了一些像你这样的问题的答案,但没有很好的解释。 – Jerry