1. 程式人生 > >使用Json4s 將帶有Timestamp的物件轉json時 變為所在時區

使用Json4s 將帶有Timestamp的物件轉json時 變為所在時區

 在有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)
}