Значения по умолчанию для отсутствующих свойств в форматах 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: у меня есть ответ, который я опубликую ниже, но я не очень доволен им и буду одобрять и принимать любой лучший вариант)