Heim >Backend-Entwicklung >Golang >Wie liest man JSON-Dateien als Objekte in Go?

Wie liest man JSON-Dateien als Objekte in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 00:57:02372Durchsuche

How Do You Read JSON Files as Objects in Go?

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:

  • Versuch 1:
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)“.

  • Versuch 2:
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn