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

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

王林
王林nach vorne
2024-02-09 08:45:181184Durchsuche

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"
   }
 ]
}

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

解决方法

您可以为 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
}

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

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen