Skip to content

Instantly share code, notes, and snippets.

@felipehummel
Created July 23, 2015 14:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save felipehummel/5569dd69038142ce3bb5 to your computer and use it in GitHub Desktop.
Save felipehummel/5569dd69038142ce3bb5 to your computer and use it in GitHub Desktop.
json default field
object JsonExtensions {
def withDefaultCreatedAt[T](base: Format[T]) = new Format[T]{
def reads(json: JsValue): JsResult[T] = base.compose(JsonExtensions.withDefault("createdAt", DateTime.now())).reads(json)
def writes(o: T): JsValue = base.writes(o)
}
def withDefault[A](key:String, default:A)(implicit writes:Writes[A]) =
__.json.update((__ \ key).json.copyFrom((__ \ key).json.pick orElse Reads.pure(Json.toJson(default))))
}
// .....
// usage
implicit val userFmt = JsonExtensions.withDefaultCreatedAt(Json.format[User])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment