spray-jsonを使ってUUIDをJSONに変換する方法。
UUIDのエンコード・デコードの方法のプロトコルを定義する:
UUIDJsonProtocol.scala
import java.util.UUID
import spray.json.deserializationError
import spray.json.{ JsString, JsValue, RootJsonFormat, DefaultJsonProtocol }
object UUIDJsonProtocol extends DefaultJsonProtocol {
implicit object UuidJsonFormat extends RootJsonFormat[UUID] {
def write(x: UUID): JsString = JsString(x.toString)
def read(value: JsValue): UUID = value match {
case JsString(x) => UUID.fromString(x)
case x => deserializationError("Expected UUID as JsString, but got " + x)
}
}
}
JSONに変換するサンプルコード:
import java.util.UUID
import spray.json._ // toJsonを使えるようになる
import UUIDJsonProtocol._ // プロトコルを元にコンバートできるようになる
println(UUID.randomUUID.toJson)