Heim  >  Artikel  >  Backend-Entwicklung  >  Wann gibt json.Unmarshal in Go Fehler zurück?

Wann gibt json.Unmarshal in Go Fehler zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 12:16:02803Durchsuche

When Does json.Unmarshal in Go Return Errors?

JSON-Decodierungsfehler in Go

Beim Decodieren von JSON in Strukturen mithilfe der json.Unmarshal-Funktion in Go ist es wichtig, die Umstände zu verstehen wodurch ein Fehler zurückgegeben wird.

Wenn keine Fehler zurückgegeben werden

Im Gegensatz zu einigen Sprachen meldet der JSON-Decoder in Go keinen Fehler, wenn Werte in der JSON-Quelle vorliegen entsprechen nicht den Werten in der Zielstruktur. Beispielsweise wird es nicht als Fehler betrachtet, wenn das JSON ein Feld enthält, das in der Struktur nicht vorhanden ist.

Wenn Fehler zurückgegeben werden

json.Unmarshal wird dies jedoch tun Geben Sie Fehler in den folgenden Situationen zurück:

  • Syntaxfehler: Wenn der JSON fehlerhaft ist oder eine ungültige Syntax enthält, wird ein Fehler zurückgegeben. Die Fehlermeldung enthält Details zum Ort des Fehlers.
  • JSON-Wert nicht durch Zieltyp darstellbar:Wenn der Wert im JSON nicht in den entsprechenden Typ in der Struktur konvertiert werden kann, Es wird ein Fehler zurückgegeben. Wenn der JSON beispielsweise einen booleschen Wert enthält, das Strukturfeld jedoch eine Zeichenfolge erwartet, schlägt json.Unmarshal fehl.

Beispiel

Bedenken Sie den folgenden Code :

type A struct {
  Name string `json:"name"`
}

jsonString := `{"status": false}`
var a A
err := json.Unmarshal([]byte(jsonString), &a)

In diesem Beispiel gibt json.Unmarshal keinen Fehler zurück, auch wenn der JSON nicht das erwartete Namensfeld enthält. Der Decoder ignoriert einfach das Statusfeld und lässt das Namensfeld der A-Struktur leer.

Wenn der JSON jedoch Folgendes enthalten würde:

{"name": false}

json.Unmarshal würde einen Fehler zurückgeben weil der JSON-Wert nicht in einen String-Typ konvertiert werden kann.

Das obige ist der detaillierte Inhalt vonWann gibt json.Unmarshal in Go Fehler zurück?. 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