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
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
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!