Heim >Backend-Entwicklung >Golang >Wann löst „json.Unmarshal' einen Fehler in Go aus?

Wann löst „json.Unmarshal' einen Fehler in Go aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 12:47:02523Durchsuche

When Does `json.Unmarshal` Throw an Error in Go?

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

In Go analysiert die json.Unmarshal-Funktion einen JSON-String in eine Struktur , aber es wird nicht immer ein Fehler zurückgegeben. In bestimmten Situationen werden jedoch Fehler zurückgegeben.

Wenn kein Fehler zurückgegeben wird

Der JSON-Decoder meldet normalerweise keinen Fehler, wenn Werte in der Quelle nicht angezeigt werden. Sie stimmen nicht mit denen im Ziel überein. Wenn die Quelle beispielsweise ein Feld mit dem Namen „Status“ enthält, das Ziel jedoch nicht, wird kein Fehler ausgelöst.

Fehlerfälle

json.Unmarshal gibt zurück Fehler in den folgenden Szenarien:

  • Syntaxfehler: Wenn die JSON-Zeichenfolge fehlerhaft ist, z. B. fehlende Anführungszeichen oder Satzzeichen.
  • JSON-Wert nicht Darstellbar durch Zieltyp: Wenn ein JSON-Wert nicht in den entsprechenden Feldtyp in der Zielstruktur konvertiert werden kann. Beispiel: Versuchen Sie, einen booleschen Wert in ein Zeichenfolgenfeld zu entpacken.

Beispiel für Fehlerfälle

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

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

fmt.Println(err) // prints cannot unmarshal bool into Go value of type string

In diesem Beispiel wird ein Fehler ausgegeben weil der Quell-JSON ein „Status“-Feld vom Typ boolean hat, die Zielstruktur jedoch kein entsprechendes boolesches Feld hat.

Das obige ist der detaillierte Inhalt vonWann löst „json.Unmarshal' einen Fehler in Go aus?. 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