我正在尝试将json解析为我的case类 DealFormMap
case class DealFormMap(limit: Option[Int], filter: Option[DealFormFilterMap]) case class DealFormFilterMap(date: Option[String], code: Option[String]) implicit val dealFormMapReads: Reads[DealFormMap] = ( (JsPath \ "limit").readNullable[Int] and (JsPath \ "filter").readNullable[DealFormFilterMap] )(DealFormMap) implicit val dealFormFilterMapReads: Reads[DealFormFilterMap] = ( (JsPath \ "date").readNullable[String] and (JsPath \ "code").readNullable[String] )(DealFormFilterMap)
有问题的JSON和解析尝试
val str = """{"limit":10,"filter":{"date":"2014-10-27"}}""" val frm = Json.parse(str).as[DealFormMap]
导致一个神秘的错误堆栈,我似乎无法破解
play.api.Application$$anon$1: Execution exception[[NullPointerException: null]] at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.5.jar:2.3.5] at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.5.jar:2.3.5] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:205) [play_2.11-2.3.5.jar:2.3.5] at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$14$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:202) [play_2.11-2.3.5.jar:2.3.5] at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.2.jar:na] Caused by: java.lang.NullPointerException: null at play.api.libs.json.PathReads$$anonfun$nullable$1$$anonfun$apply$7$$anonfun$apply$9.apply(JsConstraints.scala:65) ~[play-json_2.11-2.3.5.jar:2.3.5] at play.api.libs.json.PathReads$$anonfun$nullable$1$$anonfun$apply$7$$anonfun$apply$9.apply(JsConstraints.scala:63) ~[play-json_2.11-2.3.5.jar:2.3.5] at play.api.libs.json.JsResult$class.fold(JsResult.scala:76) ~[play-json_2.11-2.3.5.jar:2.3.5] at play.api.libs.json.JsSuccess.fold(JsResult.scala:9) ~[play-json_2.11-2.3.5.jar:2.3.5] at play.api.libs.json.PathReads$$anonfun$nullable$1$$anonfun$apply$7.apply(JsConstraints.scala:61) ~[play-json_2.11-2.3.5.jar:2.3.5]
我这里的想法已经不多了,可能是什么问题?