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
Freigeben: 2024-11-19 12:47:02
Original
522 Leute haben es durchsucht

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage