Java EE: Datenaustausch mit JSON-B

Adaptoren einsetzen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Bei der Transformation zwischen POJO und JSON-Dokument bietet JSON-B weitreichende Möglichkeiten. Denn durch spezielle Adaptoren kann die Umwandlung individuell gestaltet werden. In diesem Video wird hierzu ein Beispiel gezeigt.

Transkript

Bislang habe Sie gelernt, dass JSON-B per default, Properties ignoriert, wenn sie keinen Wert enthalten, und wie Sie dieses Verhalten mit Annotationen und Konfigurationen ändern können. In diesem Video zeige ich Ihnen einen weiteren Weg, wie Sie diese Möglichkeiten individuell gestalten können. Für diesen Weg brauchen Sie eine neue Klasse, die vom Interface JSON-B Adapter abgeleitet ist. Ich beginne nun mit der Implementierung dieser Klasse und zwar stelle ich sie in dem Paket de.java2enterprise.Onlineshop.Service. Ich klicke auf das Paket mit der rechten Maustaste, wandere im Kontextmenü auf New, dann auf Class, gebe der Klasse den Namen CustomerAdapter, bestätige beim Wizard mit einem Mausklick auf Finish und dann wurde mir die Klasse CustomerAdapter erstellt. Jetzt sorge ich dafür, dass die Klasse CustomerAdapter vom Interface JsonbAdapter abgeleitet ist, indem ich nach den Klassennamen implements hinzufüge und dann JsonbAdapter und die Generics-Parameter sollten jetzt sein Customer und JsonObject. Customer importiere ich. Und jetzt weist mich Eclipse darauf hin, dass die Klasse CustomerAdapter Methoden implementieren muss, deswegen wandere ich mit der Maus über den Klassennamen und gehe dann im Kontextmenü auf den ersten Eintrag auf Add unimplemented methods und klicke dort drauf. Und dann erscheinen zwei neue Methoden und bei diesen Methoden muss ich dann die Methodenrümpfe mit Quelltext auffüllen. Zunächst mal kümmere ich mich um die erste Methode. Das ist die Methode adaptFromJson. Dort werde ich das Objekt, das mir als Parameter übergeben werden soll, mal umbenennen. arg0 gefällt mir nicht. Ich nenne es jsonObject. Dann entferne ich den TODO-Kommentar und füge stattdessen folgende Anweisung hinzu: Ich erzeuge einen Customer, Customer customer = new Customer, und bei dem Customer da werde ich lediglich die E-Mail setzen. Und zwar muss ich hierfür beim jsonObject die Methode getString aufrufen und dann den Bezeichner der Property, die ich haben will. So, ich werde jetzt lediglich diese eine Property hinzufügen. Ich könnte jetzt hier auch weitere Properties hinzufügen, oder wenn es sich um eine Baustruktur handeln würde, dann immer weiter in der Baustruktur mir mein Customer-Objekt erarbeiten. Das mache ich jetzt nicht, sondern ich werde es an dieser Stelle ganz einfach in dem Beispiel machen und das Customer-Objekt einfach nur noch als Rückgabewert zurückliefern. Und schon bin ich mit meiner Methode adaptFromJson fertig. Als nächstes habe ich die adaptToJson-Methode, die ich jetzt implementieren muss. Auch hier werde ich den Übergabeparameter umbenennen zu customer. Und jetzt muss ich dort Json aufrufen und bei Json die Methode createObjectBuilder. So. Json muss ich importieren. Und jetzt kann ich den Punktoperator nutzen, um mir die Methoden anzuzeigen. Ich selektiere die Methode add und hier setze ich dann in Hochkommata den Bezeichner der Property ein, die ich setzen möchte, also Email, und die E-Mail soll den Wert kriegen von customer.getEmail. Und abschließend muss ich auch noch die Methode build aufrufen. Jetzt möchte ich den Rückgabewert von createObjectBuilder .add("Email", customer.getEmail()) .build() als Rückgabewert der Methode adaptToJson liefern, deswegen füge ich einfach nur das Schlüsselwort return vor dieser Anweisung hinzu. So, und schon bin ich mit der Klasse CustomerAdapter fertig. Den CustomerAdapter setze ich jetzt in der Klasse CustomerService ein, und zwar in der Methode serialize. Dort haben wir ja den JsonbConfig hier oben erstellt und jetzt kann ich Folgendes machen. Ich kann JsonbConfig nutzen, um dort die Methode withAdapters aufzurufen. Und als Adapter setze ich eine Instanz von CustomerAdapter ein. Die erzeuge ich dort direkt in den runden Klammern und speichere die Klasse CustomerService ab. Und jetzt führe ich den Test testSerialize aus, indem ich Run as > JUnit ausführe und wie Sie sehen, wird mir jetzt lediglich die Property email mitgeliefert. In diesem Video habe ich Ihnen einen weiteren Weg gezeigt, wie Sie die Umwandlung zwischen POJO und JSON-Dokument individuell gestalten können. Hierfür haben wir eine Klasse programmiert, die vom Interface JSON-B Adapter ableitet und lediglich eine einzige Property berücksichtigt. Bei der Umwandlung haben wir der Methode withAdapters der Klasse JsonbConfig eine Instanz der Adapter-Klasse übergeben. Auf diese Weise haben wir dafür gesorgt, dass alle Properties, außer der Property email, bei der Umwandlung ignoriert wurden.

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!