JSON-Dateien als Objekt in Go lesen
In Go können beim Versuch, eine JSON-Datei zu lesen und als Objekt zu analysieren, Schwierigkeiten auftreten JSON-Objekt.
Fehlgeschlagene Versuche
Einige fehlgeschlagene Versuche, JSON-Dateien als Objekte zu lesen, umfassen:
plan, _ := ioutil.ReadFile(filename) // filename is the JSON file to read var data interface{} err := json.Unmarshal(plan, data)
Dies führt zum Fehler „json: Unmarshal(nil)“.
generatePlan, _ := json.MarshalIndent(plan, "", " ") // plan is a pointer to a struct
Dies erzeugt eine String-Ausgabe, aber die Umwandlung in einen String macht eine Schleife als JSON-Objekt unmöglich.
Lösung
Der Schlüssel zur Lösung dieses Problems liegt im Wert, auf den json.Unmarshal hinweist. Es muss ein Zeiger sein.
plan, _ := ioutil.ReadFile(filename) var data interface{} err := json.Unmarshal(plan, &data)
Typ-Assertion
Wenn Sie beim Unmarshalieren eine leere Schnittstelle verwenden, müssen Sie die Typ-Assertion verwenden, um zugrunde liegende Werte als natives Go abzurufen Typen:
bool, for JSON booleans float64, for JSON numbers string, for JSON strings []interface{}, for JSON arrays map[string]interface{}, for JSON objects nil for JSON null
Best Practice
Es wird dringend empfohlen, eine konkrete Struktur zu verwenden, um JSON-Daten mit Unmarshal zu füllen. Dies sorgt für mehr Klarheit und vermeidet die Notwendigkeit von Typzusicherungen.
Das obige ist der detaillierte Inhalt vonWie liest man JSON-Dateien als Objekte in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!