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

Patricia Arquette
Freigeben: 2024-11-10 11:00:03
Original
406 Leute haben es durchsucht

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

Wann gibt JSON Unmarshal to Structure einen Fehler in Go zurück?

In Go versucht die json.Unmarshal-Funktion, JSON-formatierte Dateien zu dekodieren Bytes in eine Zieldatenstruktur. Während es erfolgreich Felder mit übereinstimmenden Namen im Quell-JSON analysiert und füllt, wird kein Fehler ausgelöst, wenn Werte nicht der Struktur des Ziels entsprechen.

json.Unmarshal wird jedoch in den folgenden Situationen auf Fehler stoßen:

Syntaxfehler:

Wenn die JSON-Eingabe syntaktisch falsch ist, gibt json.Unmarshal einen Fehler zurück. Wenn beispielsweise ein erforderliches Anführungszeichen fehlt, kann der Decoder den JSON nicht analysieren.

type A struct {
    Name string `json:"name"`
}
data := []byte(`{"name":what?}`)
err := json.Unmarshal(data, &a)
fmt.Println(err)  // prints character 'w' looking for beginning of value
Nach dem Login kopieren

JSON-Wert nicht durch Zieltyp darstellbar:

If Wenn der Typ eines JSON-Werts nicht in den Typ des entsprechenden Felds in der Zielstruktur konvertiert werden kann, gibt json.Unmarshal einen Fehler zurück. Wenn beispielsweise versucht wird, einen JSON-Booleschen Wert einem Zeichenfolgenfeld zuzuweisen:

data := []byte(`{"name":false}`)
type B struct {
  Name string `json:"name"`
}
var b B
err = json.Unmarshal(data, &b)
fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
Nach dem Login kopieren

Weitere Implementierungsdetails:

Abgesehen von Syntax- und Typkonvertierungsfehlern json.Unmarshal kann in anderen ungewöhnlichen Situationen auch Fehler zurückgeben. Eine ausführlichere Liste finden Sie in der Go-Dokumentation.

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