Benutzerdefiniertes Json schreibt mit Kombinatoren - nicht alle Felder der Fallklasse werden benötigt

7

Ich versuche, einen benutzerdefinierten Json-Serializer in Play für eine Fallklasse zu schreiben, aber ich möchte nicht, dass er alle Felder der Klasse serialisiert. Ich bin ziemlich neu bei Scala, also ist das sicher das Problem aber das habe ich bisher versucht:

%Vor%

Nun ist der Standardweg, so wie ich es in den Beispielen gesehen habe:

%Vor%

Aber was, wenn ich "c" von der Json-Ausgabe weglassen möchte? Ich habe das bisher versucht, aber es kompiliert nicht:

%Vor%

Jede Hilfe wird sehr geschätzt!

    
siki 04.12.2013, 19:26
quelle

5 Antworten

8

Wenn Sie Playframework 2.2 verwenden (nicht sicher über frühere Versionen, aber es sollte auch funktionieren), versuchen Sie Folgendes:

%Vor%     
serejja 04.12.2013, 19:56
quelle
5

Was ich normalerweise tue, ist ein Feld in None zu konvertieren und writeNullable darauf zu verwenden:

%Vor%     
Yar 08.12.2014 11:20
quelle
4

Anstatt einen Kombinator anzugeben, der eine OWrites-Instanz erzeugt, kann man auch direkt einen OWrites konstruieren:

%Vor%

Damit wird jeder Wert der Fallklasse an dieser Position ignoriert und einfach immer ein leeres JSON-Objekt zurückgegeben.

    
cbley 16.09.2015 14:12
quelle
2

Dies ist sehr einfach mit den JSON-Transformatoren von Play zu machen:

%Vor%

und wenden Sie dann transform (outputFoo) auf Ihren vorhandenen JsValue an:

%Vor%

siehe hier Ссылка

    
yzernik 16.02.2014 13:29
quelle
0

Welche Version von Play verwenden Sie? fooWritesAlt kompiliert für mich mit 2.1.3. Eine Sache zu beachten ist, dass ich explizit das Schreiben-Objekt verwenden musste, um das partielle JSON-Objekt zu schreiben, d. H.

%Vor%

gibt

zurück %Vor%     
josephpconley 05.12.2013 13:04
quelle

Tags und Links