使用Json4s 將帶有Timestamp的物件轉json時 變為所在時區
阿新 • • 發佈:2019-05-25
在有Timestamp屬性的物件轉json時 最後出來的時間會減小8小時,是因為變成了0時區,需要將隱式轉換中新增設定本地時區
import org.json4s.{DefaultFormats, Formats}
import org.json4s.jackson.Serialization.write
object Json4sDemo {
// 需要新增隱式轉換
// implicit val formats: AnyRef with Formats = Serialization.formats(NoTypeHints)
// 轉換時 設定時區
implicit val formats: AnyRef with Formats = new DefaultFormats {
override def dateFormatter = {
val f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S")
f.setTimeZone(TimeZone.getTimeZone("GMT+8"))
f
}
}
def main(args: Array[String]): Unit = {
val timestamp = Timestamp.valueOf("2019-05-16 12:02:45.4")
val user1 = User(1, name = "李明", 47, timestamp)
val user2 = User(2, name = "張傑", 43, timestamp)
val user3 = User(3, name = "王偉", 54, timestamp)
val user4 = User(4, name = "劉安", 24, timestamp)
val users = List[User](user1, user2, user3, user4)
// 由scala 物件轉換為 Json字串
val str = write(user1)
println(str)
val sts = write(users)
println(sts)
}
case class User(id: Int, name: String, age: Int, time: Timestamp)
}