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