Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara mengakses elemen struktur bersarang

Cara mengakses elemen struktur bersarang

王林
王林ke hadapan
2024-02-09 08:00:11819semak imbas

Cara mengakses elemen struktur bersarang

PHP Editor Xigua akan memperkenalkan anda cara untuk mengakses elemen struktur bersarang. Dalam pengaturcaraan, struktur bersarang sering digunakan untuk mewakili struktur data yang kompleks, seperti tatasusunan atau objek berbilang peringkat. Untuk mengakses elemen dalam struktur bersarang kita perlu menggunakan sintaks dan kaedah yang sesuai. Artikel ini akan menerangkan secara terperinci cara mengakses dan mendapatkan elemen dalam struktur bersarang langkah demi langkah mengikut tahap, membantu pembaca lebih memahami dan memproses data struktur bersarang. Sama ada anda seorang pemula atau pembangun yang berpengalaman, artikel ini akan memberikan anda petua dan contoh praktikal untuk membantu anda menangani keperluan untuk mengakses elemen struktur bersarang dengan mudah.

Kandungan soalan

Saya mempunyai struktur seperti ini. Saya mahu menghuraikan json saya ke dalam struktur ini. Tetapi saya tidak boleh mengakses struktur bersarang.

Saya harap saya boleh mencapai substruktur yang serupa, tetapi saya tidak dapat:

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

Ada sesiapa boleh tolong?

Struktur saya:

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

Ini adalah kod yang saya gunakan untuk menghuraikan json ke dalam struktur:

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
}

Penyelesaian

Anda sedang membuka slice di sini (kerana sitesdetails 类型是 []struct anda dan json anda bermula dengan tatasusunan), jadi anda sepatutnya boleh mengakses butiran anda melalui

poolName := model[0].ApplicationDefaults.ApplicationPoolName

Ini juga menerangkan sebab IDE anda hanya mencadangkan operasi yang boleh digunakan pada kepingan, seperti tambah (yang saya rasa memasukkan kod yang betul untuk ditambahkan pada kepingan anda).

BTW, anda tidak sepatutnya memanggil pembolehubah anda model ,因为这也是你显然用于你的包的名称(你正在使用 model.sitesdetails ), jadi nama pembolehubah anda akan menyembunyikan pakej pada ketika ini - ini boleh menyebabkan kekeliruan yang besar, dan mana-mana IDE yang baik harus memberi amaran kepada anda tentang perkara ini.

Atas ialah kandungan terperinci Cara mengakses elemen struktur bersarang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam