HOME > > [Play Framework 2.5][Scala]JSON形式でレスポンスを返したい

事象

Play Framework(Scala)でJSONレスポンスを返却したいのですがどのようにすればいいのでしょうか。

環境

  • Scala 2.11.8
  • Play 2.5.x

回答

Play FrameworkでJSONレスポンス返すのはとても簡単です。 /api/testにリクエストしたらJSONをレスポンスとして返す例です。

conf/routes

GET /api/test   controllers.SampleController.testJson()

このようにplay.api.libs.jsonのライブラリをインポートしてコレクションデータをJson.toJson()メソッドの引数にセットしたOkメソッドを実行するだけです。 また、.as("application/json; charset=UTF-8")でJSON用のheaderを追加しています。

app/controllers/SampleController.scala

class SampleController @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport {

  def testJson() = Action { implicit request =>
    import play.api.libs.json._
    val json = Map[String,String]("Scala"->"スカラ","Java"->"ジャバ","Ruby"->"ルビー")
    Ok(Json.toJson(json)).as("application/json; charset=UTF-8")
  }

}

activator runして下記にアクセスすればJSONが返っているのが確認できます。

html://localhost:9000/api/test

92f0bf1b253d5bb7164d75882729b319