Default Json formatters.
Default deserializer type classes.
Default Serializers.
Json formatter: write an implicit to define both a serializer and a deserializer for any type.
Represent a Json arayy value.
Represent a Json boolean value.
Represent a Json number value.
Represent a Json object value.
Represent a Json string value.
Represent a missing Json value.
Generic json value
Json deserializer: write an implicit to define a deserializer for any type.
Json serializer: write an implicit to define a serializer for any type
Default Json formatters.
Generic Json formatters to handle Product types.
Represent a Json null value.
Helper functions to handle JsValues.
Default deserializer type classes.
Default Serializers.
Json API For example:
case class User(id: Long, name: String, friends: List[User]) implicit object UserFormat extends Format[User] { def reads(json: JsValue): User = User( (json \ "id").as[Long], (json \ "name").as[String], (json \ "friends").asOpt[List[User]].getOrElse(List())) def writes(u: User): JsValue = JsObject(List( "id" -> JsNumber(u.id), "name" -> JsString(u.name), "friends" -> JsArray(u.friends.map(fr => JsObject(List("id" -> JsNumber(fr.id), "name" -> JsString(fr.name))))))) } //then in a controller: object MyController extends Controller { def displayUserAsJson(id: String) = Action { Ok(toJson( User(id.toLong, "myName", friends: List()))) } def saveUser(jsonString: String)= Action { val user = play.api.libs.json.parse(jsonString).as[User] myDataStore.save(user) Ok } }