Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java EE 7: Web Services

Erzeugen einer JSON-Struktur per Model-API

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit Hilfe der Model-API können nicht nur JSON-Strukturen eingelesen, sondern auch erzeugt werden. Hier verfolgen Sie, wie dies zu bewerkstelligen ist und wie Sie das Ergebnis schön formatiert speichern können.

Transkript

Die Object-API erlaubt es uns nicht nur Json-Dokumente einzulesen und zu verarbeiten, sondern wir können damit auch Json-Strukturen und -Dokumente erzeugen und dann wegspeichern. In diesem Video werden wir uns damit auseinandersetzen, wie wir dabei vorgehen können und welche Möglichkeiten wir haben, um das Ergebnis nach unseren Vorstellungen noch zu beeinflussen. Generell ist es so, dass wir mit Hilfe von JSON-P JSON-Strukturen erstellen können. Allerdings funktioniert das nicht auf Ebene der JsonObjekte. Also JsonStructure, JsonObject, und so weiter. Diese sind immutable, also unveränderlich. Das Erstellen beziehungsweise Hinzufügen von Inhalten ist nur über sogenannte Builder möglich. Wir können mit zwei Builder-Typen arbeiten. Nämlich ObjectBuilder und ArrayBuilder. Deren Aufgabe besteht halt genau darin, Json-Objekte zu erzeugen beziehungsweise JsonArrays. Wir verwenden dabei eine fluente API, so dass wir im Grunde immer hintereinander weg schreiben können. So einen Builder erzeugen wir über die Methoden createArrayBuilder oder createObjectBuilder der Json-Klasse. Die Inhalte werden dann per überladener Add-Methode hinzugefügt. Hierbei arbeiten wir dann mit Verschachtelungen. Wir arbeiten also mit Klammerungen. Dann werden die entsprechenden Inhalte, untergeordneten Objekte und Arrays ausgegeben. Der Aufruf der Methode build schließt dann die Erstellung am Ende ab. Das so erstellte Json-Dokument oder die so erstellte Json-Struktur können wir dann speichern. Und zwar machen wir das mit Hilfe der Klasse JsonWriter. Wenn wir da mit Formatierungen arbeiten wollen, müssen wir auf Instanzen der JsonWriterFactory zurückgreifen, die wir entsprechend mit Einstellungen erzeugen. Sehen wir uns nun an, wie wir ein Json-Dokument, bestehend aus einem Array, in dem sich zwei Filme befinden, erzeugen können. In unserer Entwicklungsumgebung legen wir einfach eine neue Java-Klasse an. Diese Java-Klasse werden wir ObjectWriter nennen. Sie verfügt über die Standardmethode Public Static Void Main und befindet sich im Package de.video2brain.json. Ein Klick auf Finish legt diese Klasse an und nun können wir uns an deren Implementierung machen. Da wir ein Array erzeugen wollen, in dem sich zwei Objekte befinden, erzeugen wir uns zunächst eine JsonArrayBuilder-Instanz. Das geschieht über die statische Methode createArrayBuilder der Json-Klasse. Diesem Builder können wir nun die untergeordneten Strukturen hinzufügen. Das läuft über die mehrfach überladene Add-Methode. Lassen Sie uns zunächst das erste Objekt definieren und zwar erzeugen wir dabei einen ObjectBuilder über die Methode createObjectBuilder der Json-Klasse und fügen diesem dann entsprechend die Felder hinzu. "Name", zum Beispiel "The Matrix". Jetzt fügen wir die Schauspieler hinzu. Das ist das Feld "actors". Das soll wieder ein Array sein. Deswegen erzeugen wir hier eine untergeordnete ArrayBuilder-Instanz, der wir dann die entsprechenden Einträge hinzufügen. ... bevor wir uns dann der Erzeugung der Jahreszahl des Films zuwenden. Achten Sie hier darauf, dass Sie an den richtigen Stellen fortfahren. Deswegen bietet sich ein Einrücken auch immer an. Wir können hier übrigens auch Boolesche Werte hinzufügen. Nun fügen wir das nächste Objekt hinzu. Lassen Sie mich hier kurz die Einrückungen etwas klarer machen. Die nächste Objekt-Instanz. Der Einfachheit halber kopiere ich hier die Felder, die wir benötigen, und passe nur noch die Werte an. Ich muss nur noch auf die korrekten Klammerungen achten, so dass ich am Ende meine Struktur fertig definiert habe. Wenn ich fertig bin, rufe ich die Methode build des Builders auf. Die gibt mir dann eine JsonStructure- Instanz zurück. In dem Fall ein JsonArray. Diese JsonStructure-Instanz kann ich nun speichern. Das mache ich, indem ich mir zunächst einmal eine JsonWriter-Instanz erzeuge und dieser Instanz dann den entsprechenden Output-Stream übergebe. Dabei kann es zu einer Exception kommen. Deswegen füge ich die entsprechende Deklaration der Methodensignatur hinzu. Nun kann ich den Writer über dessen Write-Methode die entsprechende Struktur speichern lassen und schließe das dann über den Aufruf der Methode close ab. Sie sehen, es ist nicht sonderlich kompliziert, mit Hilfe der Object-API die Ausgabe zu erzeugen. Wenn wir das Beispiel laufen lassen, können wir in unserem Projektverzeichnis die entsprechende Datei finden. Das einzige, was mir persönlich jetzt nicht gefällt, ist, dass diese Datei nur auf einer Zeile und deswegen schlecht lesbar ist. Das können wir ändern. Und zwar indem wir keinen JsonWriter direkt referenzieren, sondern uns zunächst eine JsonWriterFactory erzeugen. Diese JsonWriterFactory kann eine Konfiguration übernehmen und diese wird in Form einer Map ausgeführt, vom Typ String und Object. Die nutzen wir hier in Form einer Hashmap. Hier setzen wir den Parameter JsonGenerator PRETTY_PRINTING. Mit dem Wert true. Statt nun den Writer direkt zu erzeugen. wie wir das im Moment noch drinhaben, erzeugen wir zunächst einmal die Factory. über die statische Methode createWriterFactory der Json-Klasse. Nun können wir mit Hilfe dieser factory den eigentlichen Writer erzeugen. So sieht die Datei im Moment aus. Wenn ich jetzt das Beispiel nochmal laufen lasse, und mir dann die Datei anschaue, haben wir eine wesentlich besser lesbare Struktur erzeugt. Sie sehen, es ist mit vergleichsweise wenig Aufwand möglich, Json-Strukturen mit Hilfe der Object-API zu erzeugen und schick formatiert auszugeben. In diesem Video haben wir uns damit auseinandergesetzt, wie wir mit Hilfe der Object-API Json-Strukturen erzeugen können. Wir haben über die Methoden createArrayBuilder und createObjectBuilder der Json-Klasse gesprochen, haben uns darüber unterhalten, wie wir mit Hilfe eines JsonWriters die Daten speichern können und wie wir mit Hilfe einer JsonWriterFactory dafür sorgen können dass zum Beispiel Einrückungen und Umbrüche in der generierten Datei ausgeführt werden.

Java EE 7: Web Services

Steigen Sie ein in die Java-Enterprise-Welt und lernen Sie, wie Nachrichten ausgetauscht und Dienste definiert werden.

5 Std. 13 min (30 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

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!