In diesem Artikel stellt der Apple-Editor Apple vor, wie man mit der Funktion json.Unmarshal JSON-Daten in einen anderen benutzerdefinierten Typ konvertiert, also Slices zuordnet. Während des Entwicklungsprozesses stoßen wir häufig auf Situationen, in denen wir JSON-Daten in verschiedene Datentypen konvertieren müssen, und die Funktion json.Unmarshal kann uns dabei helfen, diese Funktion zu erreichen. Ich glaube, dass Leser durch die Einführung und den Beispielcode dieses Artikels die json.Unmarshal-Funktion besser verstehen und anwenden und die Entwicklungseffizienz und Codequalität verbessern können.
Angesichts der folgenden JSON-Zeichenfolge:
{ "username":"bob", "name":"robert", "locations": [ { "city": "paris", "country": "france" }, { "city": "los angeles", "country": "us" } ] }
Ich brauche eine Möglichkeit, es in eine Struktur wie diese zu entpacken:
type User struct { Username string Name string Cities []string }
wobei cities
ein Slice ist, der den Wert „Stadt“ enthält, wird „Land“ verworfen.
Ich denke, dass dies mit einer benutzerdefinierten json.unmarshal
-Funktion erreicht werden kann, bin mir aber nicht sicher, wie. json.unmarshal
函数来完成,但不确定如何做到这一点。
您可以为 cities
Workaround
definieren und benutzerdefinierten unmarshaler implementieren:
Das obige ist der detaillierte Inhalt vonjson.Unmarshal In einen anderen benutzerdefinierten Typ konvertieren (dem Slice zugeordnet). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!type User struct {
Username string `json:"username"`
Name string `json:"name"`
Cities []Cities `json:"locations"`
}
type Cities string
func (c *Cities) UnmarshalJSON(data []byte) error {
tmp := struct {
City string `json:"city"`
}{}
err := json.Unmarshal(data, &tmp)
if err != nil {
return err
}
*c = Cities(tmp.City)
return nil
}