Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Java EE 7: Web Services

Ausgeben von JSON-Strukturen per Streaming-API

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit einer JsonGenerator-Instanz und überladenen write()-Methoden schreiben Sie Arrays und Objekte, zunächst unformatiert. Bei Bedarf kann die Ausgabe natürlich ebenfalls formatiert werden.

Transkript

Die Streaming-API von Json-P eignet sich nicht nur dafür, um hoch performant Json-Strukturen sondern wir können mit ihrer Hilfe auch eine Ausgabe generieren. In diesem Video werden wir uns damit auseinandersetzen, wie wir mit Hilfe der Streaming-API eine Json-Struktur erzeugen können und diese dann auch gleich speichern können. Generell arbeite ich, wie in dem Fall, wenn ich etwas ausgeben möchte, mit Hilfe einer JsonGenerator-Instanz. Diese JsonGenerator-Instanz nimmt das, was ich ihr übergebe und schreibt es direkt in die Ausgabe, das heißt, das findet nicht nachgelagert statt, sondern genau in diesem Moment. Das Schreiben erledige ich mit der überladenen write()-Methode. Diese Methode kann dann Zeichenketten, numerische Werte oder boolsche Werte als Parameter entgegennehmen. Möchte ich ein Array oder ein Object erzeugen, dann verwende ich die Methoden writeStartArray() und writeStartObject(). Möchte ich ein begonnenes Array oder ein begonnenes Object wieder beenden, dann benutze ich die Methode writeEnd(). Die Erzeugung insgesamt schließe ich ab, indem ich die Methode close() der JsonGenerator- Instanz aufrufe. Normalerweise ist das, was dann ausgegeben wird, nicht formatiert. Wenn ich gerne Formatierungen haben möchte, benötige ich eine JsonGeneratorFactory-Instanz. Dieser kann ich dann eine Map vom Typ String und Object als Parameter übergeben und da kann ich dann angeben, dass das sogenannte pretty printing aktiviert ist. Sehen wir uns nun einmal an, wie wir das umsetzen können. Ich befinde mich hier in meiner Entwicklungsumgebung. Hier werde ich nun eine neue Java-Klasse anlegen, mit deren Hilfe ich dann die Ausgabe generieren kann. Ich nenne diese Java Class und weil ich sie von der Kommando- zeile aus aufrufen möchte, verwende ich die Option, wie die public static void main Methode generieren zu lassen. Nun kann ich mich um die eigentliche Generierung kümmern. Dazu erzeuge ich mir zuerst eine JsonGenerator-Instanz und zwar mit Hilfe der Methode createGenerator Json-Klasse. Diese nimmt als Parameter einen FileOutputStream entgegen und hier kann ich jetzt den gewünschten Dateinamen einfach angeben. Es kann dabei beim Schreiben zu einer Exception kommen. Das signalisiere ich auf Methodenebene, indem ich einen entsprechenden Froze Eintrag hinzufüge. Nachdem ich nun den Generator erzeugt habe, kann ich mit dessen Hilfe, die Ausgabe generieren. Zunächst möchte ich hier einen Array ausgeben und in diesem Array sollen sich zwei Objekte befinden. Das mache ich, indem ich zuerst einmal die Methode writeStartArray() aufrufe und damit die Erzeugung eines Array beginne. Nun arbeite ich auf einer fluenten API weiter, das heißt, ich brauche nicht Semikolon zu setzen, sondern ich schreibe einfach weiter und schreibe nun den Start eines Objektes. Dieses Objekt hat keinen Namen, deshalb ist es einfach nur ein writeStartObject(). Nun gebe ich die ersten Felder aus. Ich nehme das Feld name mit dem Namen des Filmes und ich lasse ein weiteres Array erzeugen über writeStartArray. Diesmal gebe ich einen Feldnamen mit an, nämlich "actors". Nun kann ich untergeordnet über die write()-Methode sagen wie heißen denn die Schauspieler. Das sind "Keanu Reeves", "Laurence Fishburne" und "Carrie-Ann Moss". Das Array ist beendet, deswegen schreibe ich nun writeEnd(). Jetzt kann ich das nächste Element schreiben, nämlich das Element "year" mit dem Erscheinungsjahr. Damit ist auch dieses Objekt beendet. Ich kopiere diesen Code und lasse mir den nächsten Eintrag, in etwas beschleunigter Form, generieren. Zuletzt beende ich das Array, indem ich nochmal writeEnd() schreibe. Wenn ich fertig bin, schließe ich den Writer und kann nun das Ergebnis begutachten. Zu diesem Zweck führe ich das Beispiel aus. Wenn ich in meinem Projekt nachschaue, gibt es eine movies_list2.json. Da ist alles drin, was ich benötige, allerdings ist sie nicht schön formatiert. Die schöne Formatierung erhalte ich, indem ich zunächst einmal eine Map vom Typ String und Object erzeuge und die bekomme ich in Form einer HashMap. Dort sage ich, dass die Option PRETTY_PRINTING Ich kann nun eine JsonGeneratorFactory-Instanz erzeugen und zwar mit der entsprechenden Methode der Json-Klasse. Hier übergebe ich die Konfiguration als Parameter. Nun kann ich mit Hilfe dieser factory den Generator erzeugen. Wenn ich jetzt das Beispiel speichere und dann ausführe, dann werde ich sehen, dass ich eine formatierte Ausgabe bekomme. Jetzt haben wir auch die Zeilenumbrüche und die Einrückungen. Schick ist es geworden. In diesem Video haben wir uns damit befasst, wie wir mit Hilfe eines JsonGenerators eine Ausgabe erzeugen können und dabei die Streaming-API benutzen können. Wir haben uns über die entsprechenden Methoden unterhalten, wir haben uns darüber unterhalten, dass die Ausgabe sofort geschrieben und wir haben auch geklärt, dass diese Ausgabe am Ende durch Aufruf der Methode close() abgeschlossen werden muss. Ebenfalls haben wir besprochen, wie wir dafür sorgen, dass die Ausgabe schön formatiert ist.

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!