Looking at a simple Scala Play JSON example (from the Play docs) to validate JSON (type JsValue
) against a case class
:
import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.data.validation.ValidationError
scala> implicit val creatureReads: Reads[Creature] = (
| (__ \ "name").read[String] and
| (__ \ "isDead").read[Boolean])
<console>:17: error: type mismatch;
found : play.api.libs.functional.FunctionalBuilder[play.api.libs.json.Reads]
#CanBuild2[String,Boolean]
required: play.api.libs.json.Reads[Creature]
(__ \ "name").read[String] and
^
Then, eventually call this:
scala> val creature = Json.obj( "name" -> "zombie", "isDead" -> true )
creature: play.api.libs.json.JsObject = {"name":"zombie","isDead":true}
scala> creature.validate[Creature]
...
But, how can I resolve the type mismatch
I'm seeing?