Ich habe eine Textdatei, in der jede Zeile ein JSON-Objekt darstellt. Ich bin der Verarbeitung dieser Datei in Go mit einem einfachen for
Schleife wie folgt aus:Wie liest man eine Textdatei Zeile für Zeile in Go, wenn einige Zeilen lang genug sind, um "bufio.Scanner: Token zu lange" Fehler zu verursachen?
scanner := bufio.NewScanner(file)
for scanner.Scan() {
jsonBytes = scanner.Bytes()
var jsonObject interface{}
err := json.Unmarshal(jsonBytes, &jsonObject)
// do stuff with "jsonObject"...
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
Wenn dieser Code eine Zeile mit einem besonders großen JSON-String (~ 67kb) erreicht, erhalte ich die Fehlermeldung „bufio.Scanner: Token zu lang ".
Gibt es eine einfache Möglichkeit, die maximale Zeilengröße, die von NewScanner
gelesen werden kann, zu erhöhen? Oder gibt es einen anderen Ansatz, den Sie insgesamt machen können, wenn Sie Zeilen lesen müssen, die für NewScanner
zu groß sind, aber im Allgemeinen bekannt sind, dass sie nicht von unsicherer Größe sind?
Danke! Für jeden, der über diese Frage stolperte, habe ich den Code in dieser SO-Frage als Ausgangspunkt benutzt: http://stackoverflow.com/questions/6141604/go-readline-string. –