ich eine Datei, die ein JSON-Array von Objekten enthält:Verwenden Jackson zum Streamen ein Array von Json Parse Objekte
[ { "test1": "abc" }, { "test2": [1, 2, 3] } ]
ich wünsche Verwendung Jacksons JsonParser verwenden, um eine Eingabestrom aus dieser Datei zu nehmen, und bei jedem Aufruf .NEXT(), ich will es ein Objekt aus dem Array zurück bis es keine Objekte mehr hat oder ausfällt.
Ist das möglich?
Anwendungsfall: Ich habe eine große Datei mit einem JSON-Array mit einer großen Anzahl von Objekten mit unterschiedlichen Schemas gefüllt. Ich möchte ein Objekt nach dem anderen holen, um nicht alles in den Speicher zu laden.
EDIT:
Ich habe ganz vergessen zu erwähnen. Meine Eingabe ist eine Zeichenfolge, die im Laufe der Zeit hinzugefügt wird. Es sammelt sich langsam im Laufe der Zeit an. Ich hatte gehofft, es Objekt für Objekt analysieren zu können, das geparste Objekt vom String entfernend.
Aber ich nehme an, das macht nichts! Ich kann das manuell tun, solange der jsonParser den Index in die Zeichenfolge zurückgibt.
Hey Ian, nach fast 2 Jahren funktioniert dieser Code tatsächlich noch und rettete meinen Tag. Nur zu versuchen, zu bestätigen, jedes Mal, wenn Mapper den Lese-Baum bearbeitet, bis das END_OBJECT-Token übereinstimmt, wo es gestartet wurde, wird der "Cursor" des Parsers auch dorthin bewegt, richtig? also, wenn ich nach der while-Schleife noch einen 'parser.nextToken()' mache, sollte ich das nächste Objekt nach dem lesen, was gerade gelesen wird, richtig? –
@JamesJiang korrekt. Der 'readTree', der einem Parser gegeben wird, der auf dem' START_OBJECT' positioniert ist, wird Ereignisse von dem Parser verbrauchen, bis er das passende 'END_OBJECT' erreicht und den Parser darauf belassen wird. –