Json4s 日期为 unixtimestamp
Json4s date to unixtimestamp
如何为 Json4s 创建包装器?默认的 json4s 格式器日期全部转换为 SimpleDateFormat。我想将所有日期字段转换为 unixtime 格式。
您应该能够实现自己的 Formats
。这是一个基于 SerializationExamples.
的简化示例
编辑:更新示例
import java.util.Date
import org.json4s._
import org.json4s.jackson.Serialization
object Main extends App {
implicit val formats = new DefaultFormats {
override val dateFormat: DateFormat = new DateFormat {
override def parse(s: String): Option[Date] = Some(new Date(s.toLong * 1000))
override def format(d: Date): String = (d.getTime/1000).toString
}
}
case class Lotto(id: Long, drawDate: Date)
val lotto = Lotto(3L, new Date())
val ser: String = Serialization.write(lotto)
println(ser) // prints value 'drawDate' as unix time
println(Serialization.read[Lotto](ser)) // prints deserialized Lotto instance
}
如果您的项目允许...而不是编写任何新代码,为什么不使用 moment.js。它当然可以让你选择在那里有 unix 输出。
如何为 Json4s 创建包装器?默认的 json4s 格式器日期全部转换为 SimpleDateFormat。我想将所有日期字段转换为 unixtime 格式。
您应该能够实现自己的 Formats
。这是一个基于 SerializationExamples.
编辑:更新示例
import java.util.Date
import org.json4s._
import org.json4s.jackson.Serialization
object Main extends App {
implicit val formats = new DefaultFormats {
override val dateFormat: DateFormat = new DateFormat {
override def parse(s: String): Option[Date] = Some(new Date(s.toLong * 1000))
override def format(d: Date): String = (d.getTime/1000).toString
}
}
case class Lotto(id: Long, drawDate: Date)
val lotto = Lotto(3L, new Date())
val ser: String = Serialization.write(lotto)
println(ser) // prints value 'drawDate' as unix time
println(Serialization.read[Lotto](ser)) // prints deserialized Lotto instance
}
如果您的项目允许...而不是编写任何新代码,为什么不使用 moment.js。它当然可以让你选择在那里有 unix 输出。