playframework에서 json 읽기 정보

4115 단어 JSONPlayFramework

동기



회사의 어떤 시스템에서 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 클래스에 따른 형태





Person 클래스를 따르지 않는 형태







여유로 parse 하기 때문에, 원인은 그 밖에 있을 것 같네요.

결론



사실 Jackson을 사용하고 있으며 Jackson의 deserialize에서 오류가 발생했습니다.
h tp : // 쿠이타. 이 m/오페인 gl-8080/이고 ms/b613b9b3bc5d796c840c#2-7

해결 방법



case class에@JsonIgnoreProperties(ignoreUnknown = true)를 붙여 에러를 내지 않도록 했습니다.

Jackson을 사용할 때 조심하지 않으면 안됩니다.

playframework의 json 퍼스에서 엄격하게 parse하려면



이 근처인가?

좋은 웹페이지 즐겨찾기