study-note

7. JSON API

目次

JSONとは

{
  "id": 1,
  "name": "ユーザー",
  "email": "user@example.com"
}

PlayでJSONを扱う

import play.api.libs.json._

case classとJSONを変換

例:UserクラスをJSONに変換/変換から復元

case class User(id: Long, name: String)

object User {
  implicit val userFormat: Format[User] = Json.format[User]
}

ControllerでJSONを受け取る

def receiveJson = Action(parse.json) { request =>
  val result = request.body.validate[User]
  result.fold(
    errors => BadRequest("Invalid JSON"),
    user => Ok("Received user: " + user.name)
  )
}

JSONを返す(レスポンス)

def getJson = Action {
  val user = User(1, "ユーザー")
  Ok(Json.toJson(user))
}