我使用lift-json (lift 2.6-M3)和尝试处理具有epoch值的json数据,如
"updatetime": 1249409679,
当然lift-json可以把它们当作JInt值,提取对象作为Long字段,但是是否有一种方法可以将它们视为日期(或DateTime等)对象?
添加5/16/2014:下面的代码似乎可以工作。
implicit val formats = DefaultFormats + new Serializer[java.util.Date] {
def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), java.util.Date] = {
case (t, JInt(num)) if (t.clazz == classOf[java.util.Date]) => new java.util.Date(num.toLong * 1000)
}
def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
case x if (x.getClass == classOf[java.util.Date]) => new JInt(x.asInstanceOf[java.util.Date].getTime / 1000)
}
}
lift-json可以从/映射到(case)类,如果它还没有一个格式化程序从纪元号到日期,你可以编写自己的格式化程序。请看这里的文档:https://www.assembla.com/wiki/show/liftweb/JSON_Support
,特别是在格式化器的源