POSTリクエストとしてJsonを受け取り,そのJsonをencodeしたりdecodeしたりしてみた
conf/routesを変更
POST /json controllers.JSONController.jsonParse
コントローラーの記述
package controllers import javax.inject.Inject import play.api.mvc.{Action, Controller} import play.api.libs.json._ // caseクラスを定義 case class Person(username: String, password: String) // コンパニオンオブジェクトを定義 object Person { implicit def jsonWrites = Json.writes[Person] implicit def jsonReads = Json.reads[Person] } /** * Created by mituba on 2017/06/30. */ class JSONController @Inject() extends Controller { def jsonParse = Action { request => // getRequestJson val params : Option[JsValue] = request.body.asJson val json = params.get // encode val result: JsResult[Person] = json.validate[Person] val person: Person = result.get println(person.username + " " + person.password) // decode val decodeJson: JsValue = Json.toJson(person) println(decodeJson.toString()) Ok(decodeJson.toString()) } }
curlでPOSTする
curl -H "Content-Type: application/json" -X POST -d '{"username":"xyz","password":"xyz"}' http://localhost:9000/json
無事Jsonを受け取って,encode,decodeできました.
参考
以下のサイトを参考にしてもらいました.