7 Stimmen

"Ungültiges Zeichen '1' nach dem Top-Level-Wert" JSON unmarshalling

Ich benutze json, um Daten auf der Festplatte zwischen Programmaufrufen zu speichern, das Programm läuft gut für einige Zeit, aber danach zeigt es Fehler in json Decodierung, "ungültiges Zeichen '1' nach Top-Level-Wert ".

Kann jemand eine Lösung für dieses Problem vorschlagen?

5voto

jimt Punkte 23603

Anstatt eine Datei manuell zu öffnen, sollten Sie einige der eingebauten IO-Funktionen verwenden.

import (
  "io/ioutil"
  "encoding/json"
)
...
func Save(myobj SomeType, filename string) (err error) {
    var data []byte
    if data, err = json.Marshal(myobj); err != nil {
        return
    }
    return ioutil.WriteFile(filename, data)
}

Dasselbe gilt für das Laden von json-Daten, wo Sie ioutil.ReadFile y json.Unmarshal .

3voto

cthom06 Punkte 8999

Wenn Sie die Daten auf die Festplatte schreiben, stellen Sie sicher, dass Sie die os.O_TRUNC (oder die Datei anderweitig abschneiden) in den Open-Flags? Wenn nicht, funktioniert das Programm einwandfrei, bis Sie ein Objekt schreiben, das kleiner ist als das letzte. Aber es ist schwer, Code zu debuggen, ohne ihn zu sehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X