Jackson mehrere Objekte und riesige JSON-Dateien

7

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.

    
Tom Carrick 02.05.2012, 09:27
quelle

3 Antworten

8

Verwenden Sie dieses Codebeispiel, um die Grundidee zu sehen.

%Vor%     
Marko Topolnik 02.05.2012, 09:47
quelle
11

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.

    
StaxMan 02.05.2012 23:58
quelle
1

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.

    
Steven Schlansker 03.05.2012 01:18
quelle

Tags und Links