So greifen Sie auf verschachtelte Strukturelemente zu

王林
Freigeben: 2024-02-09 08:00:11
nach vorne
870 Leute haben es durchsucht

So greifen Sie auf verschachtelte Strukturelemente zu

Der PHP-Editor Xigua zeigt Ihnen, wie Sie auf verschachtelte Strukturelemente zugreifen. In der Programmierung werden verschachtelte Strukturen häufig zur Darstellung komplexer Datenstrukturen verwendet, beispielsweise mehrstufige Arrays oder Objekte. Um auf Elemente in einer verschachtelten Struktur zuzugreifen, müssen wir die entsprechende Syntax und Methoden verwenden. In diesem Artikel wird detailliert erläutert, wie Sie Schritt für Schritt entsprechend der Ebene auf Elemente in der verschachtelten Struktur zugreifen und diese abrufen können, um den Lesern dabei zu helfen, die Daten der verschachtelten Struktur besser zu verstehen und zu verarbeiten. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, erhalten Sie in diesem Artikel praktische Tipps und Beispiele, die Ihnen helfen, den Zugriff auf verschachtelte Strukturelemente problemlos zu bewältigen.

Frageninhalt

Ich habe eine Struktur wie diese. Ich möchte meinen JSON in diese Struktur analysieren. Aber ich kann nicht auf die verschachtelte Struktur zugreifen.

Ich wünschte, ich könnte eine ähnliche Unterstruktur erreichen, aber ich kann nicht:

func main() {
    str := `[{
        "applicationdefaults":  {
            "applicationpoolname": "defaultapppool",
                ....
    }]`

    mdl := foo(str)

    // mdl.applicationdefaults ?? i can't reach like this. there are only a few functions like: append!, last! , print!, range!, reverse!, sort!, var!
}
Nach dem Login kopieren

Kann jemand helfen?

Meine Struktur:

package model

type sitesdetails []struct {
    applicationdefaults struct {
        applicationpoolname string      `json:"applicationpoolname"`
        enabledprotocols    string      `json:"enabledprotocols"`
        attributes          string      `json:"attributes"`
        childelements       string      `json:"childelements"`
        elementtagname      string      `json:"elementtagname"`
        islocallystored     bool        `json:"islocallystored"`
        methods             interface{} `json:"methods"`
        rawattributes       string      `json:"rawattributes"`
        schema              string      `json:"schema"`
    } `json:"applicationdefaults"`
    applications []string `json:"applications"`
    bindings     []string `json:"bindings"`
    id           int      `json:"id"`
    limits       struct {
        connectiontimeout string      `json:"connectiontimeout"`
        maxbandwidth      int64       `json:"maxbandwidth"`
        maxconnections    int64       `json:"maxconnections"`
        maxurlsegments    int         `json:"maxurlsegments"`
        attributes        string      `json:"attributes"`
        childelements     string      `json:"childelements"`
        elementtagname    string      `json:"elementtagname"`
        islocallystored   bool        `json:"islocallystored"`
        methods           interface{} `json:"methods"`
        rawattributes     string      `json:"rawattributes"`
        schema            string      `json:"schema"`
    } `json:"limits"`
}
Nach dem Login kopieren

Dies ist der Code, den ich verwende, um JSON in eine Struktur zu analysieren:

func foo(resp string) model.SitesDetails {
    data := []byte(resp)

    var m model.SitesDetails
    err := json.Unmarshal(data, &m)
    if err != nil {
        log.Fatal(err)
    }
    return m
}
Nach dem Login kopieren

Workaround

Sie führen hier ein Unmarshaling zu einem Slice durch (weil Ihr sitesdetails 类型是 []struct und Ihr JSON mit einem Array beginnen), sodass Sie über

auf Ihre Daten zugreifen können
poolName := model[0].ApplicationDefaults.ApplicationPoolName
Nach dem Login kopieren

Dies erklärt auch, warum Ihre IDE nur Vorgänge vorschlägt, die auf Slices angewendet werden können, wie z. B. Anhängen (was meiner Meinung nach den richtigen Code zum Anhängen an Ihr Slice einfügen würde).

Übrigens sollten Sie Ihre Variablen wirklich nicht aufrufen model ,因为这也是你显然用于你的包的名称(你正在使用 model.sitesdetails ), damit Ihre Variablennamen das Paket an dieser Stelle verbergen – das kann zu großer Verwirrung führen und jede anständige IDE sollte Sie davor warnen.

Das obige ist der detaillierte Inhalt vonSo greifen Sie auf verschachtelte Strukturelemente zu. 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