title: Defaults for missing properties in play 2 JSON formats
body: <p>I have an equivalent of the following model in play scala :</p>
  
  <pre><code>case class Foo(id:Int,value:String)
  object Foo{
    import play.api.libs.json.Json
    implicit val fooFormats = Json.format[Foo]
  }
  </code></pre>
  
  <p>For the following Foo instance </p>
  
  <pre><code>Foo(1, "foo")
  </code></pre>
  
  <p>I would get the following JSON document:</p>
  
  <pre><code>{"id":1, "value": "foo"}
  </code></pre>
  
  <p>This JSON is persisted and read from a datastore. Now my requirements have changed and I need to add a property to Foo. The property has a default value : </p>
  
  <pre><code>case class Foo(id:String,value:String, status:String="pending")
  </code></pre>
  
  <p>Writing to JSON is not a problem :</p>
  
  <pre><code>{"id":1, "value": "foo", "status":"pending"}
  </code></pre>
  
  <p>Reading from it however yields a JsError for missing the "/status" path.</p>
  
  <p>How can I provide a default with the least possible noise ?</p>
  
  <p>(ps: I have an answer which I will post below but I am not really satisfied with it and would upvote and accept any better option)</p>