2016-08-21 2 views
1

Ich habe gelesen, wie Jackson Jackson Streaming-API sowie Jackson Mapper für Objekt-Json-Konvertierung und umgekehrt zu verwenden, aber für mein Frühjahr Projekt, das sollte ich verwenden.Jackson Streaming API vs Jackson Mapper

Es wurde geschrieben Streaming API ist am mächtigsten, aber ich finde Mapper wirklich einfach zu bedienen und leicht verständlich.

Meine Frage ist, wie Streaming API leistungsfähiger als Mapper ist und welche ist besser in Bezug auf die Verwendung in einem großen Frühlingsprojekt zu verwenden?

+0

Wann ist es eine gute Idee, den gesamten Inhalt einer Datei in den Speicher zu laden, und wann ist es eine bessere Idee, die Datei Zeile für Zeile zu lesen und jede Zeile nacheinander zu bearbeiten? Ich würde sagen, dass dies hauptsächlich von der Größe der Datei, der Anzahl der gleichzeitig zu verarbeitenden Dateien, dem verfügbaren Speicher und der relativen Schwierigkeit der beiden möglichen Lösungen abhängt. nicht wahr? Gleiches gilt für JSON. –

+0

ja, es wird von der Größe der Daten abhängen, aber in beiden Fällen muss es auf die Festplatte geschrieben werden, also wo ist der Unterschied. Auch, wie Streaming-API ist leistungsfähiger als die Mapper. –

+0

Ich verstehe nicht wirklich, warum der JSON auf der Festplatte gespeichert werden müsste, aber Sie scheinen meinen vorherigen Kommentar nicht verstanden zu haben. Wenn Sie über 500 MB Arbeitsspeicher verfügen, funktioniert das Laden eines JSON, der 600 MB groß ist, und das Schreiben dieser 600 MB auf Datenträger nicht. Laden Sie es 1 MB pro 1 MB, und schreiben Sie jedes MB auf die Festplatte vor dem Laden der nächsten wird gut funktionieren. –

Antwort

1

Jackson Mapper:

wenn Jackson Mapper verwenden, laden wir das gesamte JSON-Dokument in den Speicher als Java-Objekt. Dies kann ein Problem sein, wenn ein sehr großer Datensatz vorhanden ist. Wenn beispielsweise Mapper in einem sehr großen Projekt verwendet werden, beträgt Ihr Speicherlimit nur 512 MB. Die Größe von JSON beträgt jedoch 600 MB. In diesem Fall stürzt die Anwendung ab. In solchen Situationen wird die Verwendung von Streaming API bevorzugt.

Jackson Streaming API:

wenn jackson Streaming-API, wir json Daten-Token von Token dh wie der Name Streaming api schlägt vor, behandelt die json Dokument als Strom von json Token laden kann, die man konsumiert werden kann durch eine ohne Speicherprobleme. Aber wenn Speicherbedarf ist nicht viel Mapper sind bevorzugt, weil sie schnell und effizient sind.

Der zweite Teil der Frage,

Wie API mächtiger als Mapper ist Streaming?

Nun, da JSON Dokument als Strom von Tokens behandelt wird, können wir Token nach unseren Anforderungen manipulieren und sie verwenden. Mapper bieten nur Funktionen zum Abrufen und Speichern. Die Streaming-API ist sehr low-level mit mehr Leistung für den Entwickler.

Die API, die Low-Level ist, ist schwieriger zu verwenden und manchmal verwirrend, während die Mapper-Funktionalität einfach zu verwenden ist.