Java EE: Datenaustausch mit JSON-B

Properties ignorieren und leere Properties akzeptieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
JSON-B wandelt standardmäßig Properties nicht um, wenn sie keinen Wert enthalten. Lernen Sie, wie sich dies verhindern lässt und wie Sie festlegen können, dass Properties komplett ignoriert werden.

Transkript

JSON-B ignoriert Properties, die keinen Wert enthalten. Dies lässt sich in unserem Programmierbeispiel sehr gut zeigen. Denn die Testmethode testSerialize hier links setzt beispielsweise kein Geburtsdatum und auch keinen Kreditbetrag für die Customer-Objekte ein. Die Ausgabe ist folglich ganz ohne diese Properties. Ich kann Ihnen das mal vorführen. Ich selektiere testSerialize mit der rechten Maustaste, gehe dann auf Run as, dann auf JUnit Test, und wie Sie sehen, fehlen die Properties birthdate und credit. Die Ausgabe ist folglich also ganz ohne diese Properties, allerdings ist das eventuell nicht das, was die Anwendung benötigt. Dies lässt sich aber ändern. Ich kann bei der Klasse Customer eine Annotation hinzufügen, die sich JsonbNillable nennt. Und wenn ich die Customer-Klasse jetzt abspeichere und den Test testSerialize erneut ausführe, dann sehen Sie, dass auch die beiden Properties ausgegeben werden, obwohl sie keinen Wert enthalten. Dieses Verhalten kann ich auch für einzelne Properties setzen. Hierfür verwende ich aber eine andere Annotation JsonbNillable nehme ich mal raus und gehe dann auf birthdate und setze dort die Annotation JsonbProperty ein und dort innerhalb der Property setze ich das Attribut nillable auf true. Nun speichere ich die Klasse Customer wieder und führe den Test testSerialize erneut aus, und jetzt sehen Sie, dass birthdate mit null angezeigt wird oder ausgegeben wird, credit aber nicht, denn dort hatte ich ja, JsonbProperty nillable=true nicht gesetzt. Ich zeige Ihnen jetzt noch eine Möglichkeit, wie Sie dafür sorgen können, dass Properties ausgegeben werden, obwohl sie auf null zeigen. Hierfür entferne ich jetzt wieder die Annotation JsonbProperty nillable=true bei dem birthdate, und ja, wir möchten ja, dass testSerialize an dieser Stelle birthdate und credit mit null ausgibt, also muss ich in CustomerService in die Methode serialize hineingehen und dort ein JsonbConfig-Objekt erzeugen, jsonbConfig = new JsonbConfig und dann führe ich bei JsonbConfig die Methode withNullValues aus und übergebe den Wert true. So, und jetzt muss ich noch JsonbConfig als Übergabeparameter der Methode create übergeben, und dann schauen wir uns bei testSerialize an, was bei der Ausführung dieser Testmethode passiert, denn testSerialize nutzt ja die Methode serialize des Customer Services, also gehe ich mit der rechten Maustaste auf testSerialize, dann im Kontextmenü auf Run as > JUnit Test und dann sehen Sie, dass auch jetzt wieder beide Properties erscheinen, obwohl sie auf null zeigen. Nun könnte es aber auch sein, dass Sie eine Property gar nicht ausgeben möchten. Das heißt, sie soll ignoriert werden. Ganz egal, ob dort ein Wert vorliegt bei der Property oder nicht. In diesem Fall setzen Sie eine weitere Annotation ein. Die setze ich mal bei dem birthdate ein. Diese Annotation die nennt sich JsonbTransient. Ich gehe mit der linken Maustaste über die Annotation und importiere JsonbTransient, speichere die Klasse Customer ab und wechsle dann wieder in meinen CustomerServiceTest und führe testSerialize einmal aus. So, und jetzt sehen Sie, dass mir credit mit dem null-Wert ausgegeben wird. Wieso? Weil ich habe es ja bei der Konfiguration so angegeben, dass ich alles haben möchte, auch wenn da null-Werte drin sind in den Properties. Allerdings habe ich die Annotation JsonbTransient hier bei der Klasse Customer vor dem birthdate gesetzt, deswegen wird mir birthdate nicht ausgegeben. Es wird einfach ignoriert. In diesem Video habe ich Ihnen erklärt, dass Jsonb standardmäßig Properties nicht umwandelt, wenn sie keinen Wert enthalten. Dann haben wir mit einer speziellen Annotation dafür gesorgt, dass bestimmte Properties umgewandelt werden, auch wenn sie keinen Wert enthalten. Abschließend habe ich Ihnen auch noch gezeigt, wie Sie festlegen können, dass Properties komplett ignoriert werden.

Java EE: Datenaustausch mit JSON-B

Sehen Sie, wie sich Java- und JSON-Objekte praktisch transformieren lassen.

1 Std. 17 min (16 Videos)
Derzeit sind keine Feedbacks vorhanden...
Exklusiv für Abo-Kunden
Erscheinungsdatum:18.07.2018

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!