Значения по умолчанию для отсутствующих свойств в форматах play 2 JSON

У меня есть эквивалент следующей модели в игре Scala:

case class Foo(id:Int,value:String)
object Foo{
  import play.api.libs.json.Json
  implicit val fooFormats = Json.format[Foo]
}

Для следующего экземпляра Foo

Foo(1, "foo")

Я бы получил следующий документ JSON:

{"id":1, "value": "foo"}

Этот JSON сохраняется и читается из хранилища данных. Теперь мои требования изменились, и мне нужно добавить свойство в Foo. Свойство имеет значение по умолчанию:

case class Foo(id:String,value:String, status:String="pending")

Запись в JSON не является проблемой:

{"id":1, "value": "foo", "status":"pending"}

Однако чтение из него приводит к ошибке JsError за отсутствие пути "/ status".

Как я могу обеспечить по умолчанию с наименьшим возможным шумом?

(PS: у меня есть ответ, который я опубликую ниже, но я не очень доволен им и буду одобрять и принимать любой лучший вариант)

Ответы на вопрос(7)

Ваш ответ на вопрос