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.
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! }
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"` }
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 }
Sie führen hier ein Unmarshaling zu einem Slice durch (weil Ihr sitesdetails
类型是 []struct
und Ihr JSON mit einem Array beginnen), sodass Sie über
poolName := model[0].ApplicationDefaults.ApplicationPoolName
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!