Ich habe das Gefühl, dass die Antwort ein Duplikat davon sein könnte: Jackson - Json zu POJO mit mehreren Einträgen , aber ich denke, dass die Frage möglicherweise unterschiedlich genug ist. Außerdem verwende ich Rohdatenbindung statt vollständiger Datenbindung.
So wie der Fragesteller dieser Frage, habe ich mehrere Objekte in einer Datei und ich versuche, sie in POJOs umzuwandeln und sie in eine Datenbank meines Designs zu stopfen, damit ich schnell auf die Daten zugreifen kann, anstatt langsam.
Die Dateien liegen hier in der Größenordnung von mehreren zehn GB, mit bis zu Millionen von Objekten in jeder Datei. Wie auch immer, hier ist was ich bisher habe:
%Vor%Und das funktioniert hervorragend, um das Balkenelement des ersten Objekts in foo zu drucken, aber ich brauche eine Möglichkeit, jedes Element auf eine Weise zu durchlaufen, die meinen ganzen Speicher nicht auffressen wird.
Danke.
Verwenden Sie dieses Codebeispiel, um die Grundidee zu sehen.
%Vor% Sie müssen nicht zwischen Streaming ( JsonParser
) und ObjectMapper
wählen, beides!
Durchstreiche ein bisschen mit dem Parser, aber rufe dann JsonParser.readValueAs(MyType.class)
auf, um ein einzelnes JSON-Objekt zu binden.
Oder rufen Sie ObjectMapper
's readValue()
method auf und übergeben Sie JsonParser an geeigneten Punkten. Oder verwende ObjectMapper.reader(Type.class).readValues()
und iteriere so.
Angenommen, Sie haben ein Array, das Ihre Objekte umschließt, erstellen Sie einen JsonParser und rufen Sie dann readValuesAs
mit dem entsprechenden Typ auf. Es gibt Ihnen Iterator
mit all Ihren Objekten zurück, die die Datei durchlesen, während Sie die Objekte konsumieren.