You can achieve this with readNullable
or orElse
:
(__ \ 'name).readNullable[String].map(_.getOrElse("default"))
// Another solution:
(__ \ 'name).read[String] orElse Reads.pure("default")
Note: Readers don't work fine with "one-field" case class (but I suppose it's just for this example). Otherwise, see this topic.