Home > Backend Development > Golang > How to access nested structure elements

How to access nested structure elements

王林
Release: 2024-02-09 08:00:11
forward
919 people have browsed it

How to access nested structure elements

php editor Xigua will introduce how to access nested structural elements. In programming, nested structures are often used to represent complex data structures, such as multi-level arrays or objects. To access elements in a nested structure we need to use appropriate syntax and methods. This article will explain in detail how to access and obtain elements in the nested structure step by step according to the level, helping readers better understand and process nested structure data. Whether you are a beginner or an experienced developer, this article will provide you with practical tips and examples to help you easily deal with the need to access nested structural elements.

Question content

I have such a structure. I want to parse my json into this structure. But I can't access the nested structure.

I would like to be able to achieve a similar substructure, but I can't:

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!
}
Copy after login

Can anyone help?

My structure:

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"`
}
Copy after login

This is the code I use to parse json into a structure:

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
}
Copy after login

Workaround

You are unmarshaling to a slice here (because your sitesdetails type is []struct and your json starts with an array), so you should be able to access your details via

poolName := model[0].ApplicationDefaults.ApplicationPoolName
Copy after login

This also explains why your IDE only suggests operations that can be applied to slices, such as append (I guess this inserts the correct code to append to your slice).

BTW, you really shouldn't call your variable model, since that's also the name you're apparently using for your package (you're using model.sitesdetails) , so your variable names will hide the package at this point - this can lead to huge confusion, and any decent IDE should warn you about this.

The above is the detailed content of How to access nested structure elements. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template