2017-03-29 1 views
0

Ich habe die folgenden Objekte:Wiedergabe JSON serialisieren/deserialisieren Fall-Klasse mit einem Argument durch Überspringen es

case class Foo(value: UUID) 
case class Bar(foo: Foo) 

Und ich möchte sie so in JSON serialisiert haben:

{foo: "e88ad5ea-13cf-4666-addb-c231c12cd3a3"} 

Bedeutung Ich möchte das Argument "value" weglassen, das vom automatischen Formatierer hinzugefügt wird, wenn ich einfach folgendes schreibe:

I t Ich habe meine Autoren/Leser geschrieben, aber ich weiß nicht, wie ich einen JPath überspringen kann.

Antwort

0

Was:

implicit val format: Format[Bar] = new Format[Bar] { 
    override def writes(o: Bar): JsValue = Json.obj("foo" -> o.foo.value) 

override def reads(json: JsValue): JsResult[Bar] = 
    (json \ "foo").validate[String].map(s => Bar(Foo(UUID.fromString(s)))) 
} 
+0

Ja, ich denke, dass das funktionieren würde. Aber in meinem konkreten Fall hat Bar tatsächlich viele andere Parameter, und ich hätte es vorgezogen, nicht alle Schreib-/Lesevorgänge schreiben zu müssen. – CanardMoussant

Verwandte Themen