LoginSignup
1
1

More than 5 years have passed since last update.

playframeworkでのjson読み取りについて

Last updated at Posted at 2015-11-28

動機

会社のとあるシステムでjsonに一項目増やしたらエラーが出るようになったので、jsonのparseが厳密すぎるのではないか?という話になったが、そんな馬鹿なという感じなのでちょっと試してみた。

ソースコード

Application.scala
package controllers

import play.api.libs.json.{Json, Reads}
import play.api.mvc._

class Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }
  case class Person(name: String, age: Int)
  implicit val personReads: Reads[Person] = Json.reads[Person]
  def json = Action(parse.json) { implicit request =>
    request.body.validate[Person].fold(invalid => BadRequest(invalid.mkString(",")), valid => Ok("no problem"))
  }

}

Personクラスに則った形

2015-11-29_00h44_42.png

Personクラスに則っていない形

2015-11-29_00h44_12.png

うーむ

余裕でparseしよるので、原因は他にありそうですね。

結論

実はJacksonを使用していて、Jacksonのデシリアライズでエラーを出していた
http://qiita.com/opengl-8080/items/b613b9b3bc5d796c840c#2-7

解決方法

case classに
@JsonIgnoreProperties(ignoreUnknown = true)
をつけてエラーを出さないようにしました。

Jacksonを使うときには気をつけないとダメですね。

playframeworkのjsonパースで厳密にparseするには

この辺かな?

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1