我正在使用 lift-json (lift 2.6-M3) 并尝试处理具有 epoch 值的 json 数据,例如
"updatetime": 1249409679,
当然 lift-json 可以将它们视为 JInt 值并将对象提取为 Long 字段,但是有没有办法将它们视为 Date(或 DateTime 等)对象?
2014 年 5 月 16 日添加:以下代码似乎有效。
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)
}
}