Heim > Backend-Entwicklung > Golang > json.Unmarshal In einen anderen benutzerdefinierten Typ konvertieren (dem Slice zugeordnet)

json.Unmarshal In einen anderen benutzerdefinierten Typ konvertieren (dem Slice zugeordnet)

王林
Freigeben: 2024-02-09 08:45:18
nach vorne
1249 Leute haben es durchsucht

json.Unmarshal 转换为自定义的另一种类型(映射到切片)

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.

Frageninhalt

Angesichts der folgenden JSON-Zeichenfolge:

{
 "username":"bob",
 "name":"robert",
 "locations": [
   {
    "city": "paris",
    "country": "france"
   },
   {
    "city": "los angeles",
    "country": "us"
   }
 ]
}
Nach dem Login kopieren

Ich brauche eine Möglichkeit, es in eine Struktur wie diese zu entpacken:

type User struct {
 Username string
 Name string
 Cities []string
}
Nach dem Login kopieren

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 函数来完成,但不确定如何做到这一点。

解决方法

您可以为 citiesWorkaround

Sie können neue Typen für

definieren und benutzerdefinierten unmarshaler implementieren:

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

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!

Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage