playframework/Play20 — comment on commit 63448578b15dcc7bf4806878c7b3aa4c74193af6
File: framework/play/src/main/scala/play/api/JSON.scala line 38
By ikester:

I believe Jerkson/Jackson is reflexion based and I remember reading somewhere that the dev team wanted a strongly typed option.

By the way, I just tried the following and it throws a NPE:

package models

case class Company(id: Long, name: String, owner: User)
case class User(id: Long, name: String, favThings: List[String])

import sjson.json._
import dispatch.json._
import JsonSerialization._

object Protocol extends DefaultProtocol {
implicit val CompanyFormat: Format[Company] = asProduct3("id", "name", "owner")(Company)(Company.unapply(_).get)
implicit val UserFormat: Format[User] = asProduct3("id", "name", "things")(User)(User.unapply(_).get)
}

And in the controller:

def json = Action {
Ok(tojson(Company(1, "Sedutto", User(1, "Ikester", List("tea", "movies", "music")))))
}