Play Framework 2.2.1 Json Combinators - Reads and Writes Compile Error

Viewed 1263

Trying to run Json Combinator examples for Json Reads and Writes from http://www.playframework.com/documentation/2.2.x/ScalaJsonCombinators:

def test = Action {

case class Creature(name: String,isDead: Boolean,weight: Float, email: String, favorites: (String, Int), friends: List[Creature] = Nil, social: Option[String] = None)
import play.api.libs.json._
import play.api.libs.functional.syntax._

implicit val creatureWrites: Writes[Creature] = (
  (__ \ "name").write[String] and
    (__ \ "isDead").write[Boolean] and
    (__ \ "weight").write[Float] and
    (__ \ "email").write[String] and
    (__ \ "favorites").write(
      (__ \ "string").write[String] and
        (__ \ "number").write[Int]
        tupled
    ) and
    (__ \ "friends").lazyWrite(Writes.traversableWrites[Creature](creatureWrites)) and
    (__ \ "social").write[Option[String]]
  )(unlift(Creature.unapply))

val gizmo = Creature("gremlins", false, 1.0F, "gizmo@midnight.com", ("alpha", 85), List(), Some("@gizmo"))
val gizmojs = Json.toJson(gizmo)

Ok(gizmojs toString)
}

I receive the following compile error:

[error] ....:forward reference extends over definition of value creatureWrites
[error] (__ \ "friends").lazyWrite(Writes.traversableWrites[Creature](creatureWrites)) 

I have a similar problem with Reads and Format.

Please help.

2 Answers
Related