play.api.libs.json.JsonでオブジェクトをJson化
case class Human(lastName: String, firstName: String, age: Int)
こいつをJsonに変換しようと思います。
結果からいうとこういうソースになります。
case class Human(lastName: String, firstName: String, age: Int) { implicit val humanWrites = new Writes[Human] { def writes(human: Human) = Json.obj( "first" -> human.firstName, "last" -> human.lastName, "age" -> human.age ) } def toJson = Json.stringify(Json.toJson(this)) }
まずはコンバーターを用意する。
implicit val humanWrites = new Writes[Human] { def writes(human: Human) = Json.obj( "first" -> human.firstName, "last" -> human.lastName, "age" -> human.age ) }
そしたらJson.toJsonでJsValueに変換した後、Json.stringifyで文字列に変換
def toJson = Json.stringify(Json.toJson(this))
Json化したらPOSTするなりなんなりと。
val h = new Human("koya", "fukushi", 20) val url = "http://hogehoge.com" WS.url(url).withHeaders("Content-Type" -> "application/json").post(h.toJson)
詳細は
https://www.playframework.com/documentation/ja/2.3.x/ScalaJson