Domyślnie brakujące właściwości w odtwarzanych 2 formatach JSON
Mam odpowiednik następującego modelu w scala gry:
case class Foo(id:Int,value:String)
object Foo{
import play.api.libs.json.Json
implicit val fooFormats = Json.format[Foo]
}
Dla następującej instancji Foo
Foo(1, "foo")
Otrzymałbym następujący dokument JSON:
{"id":1, "value": "foo"}
Ten JSON jest utrwalany i odczytywany z magazynu danych. Teraz zmieniły się moje wymagania i muszę dodać właściwość do Foo. Właściwość ma wartość domyślną:
case class Foo(id:String,value:String, status:String="pending")
Pisanie do JSON nie stanowi problemu:
{"id":1, "value": "foo", "status":"pending"}
Odczyt z niego daje jednak błąd JsError dla pominięcia ścieżki „/ status”.
Jak mogę zapewnić domyślne z najmniejszym możliwym hałasem?
(ps: Mam odpowiedź, którą opublikuję poniżej, ale nie jestem z niej bardzo zadowolony i będę głosować i akceptować każdą lepszą opcję)