I like the built-in JSON support in Play 2.x. It works, it's well documented, and it's just one less dependency to worry about.
Your JSON pretty-print of Person
would be accomplished in two lines (plus an import):
import play.api.libs.json._
...
implicit val personFormat = Json.format[Person]
println(Json.toJson(personToWrite))