Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan Data JSON dengan Struktur Dinamik Bersarang dalam Go?

Bagaimana untuk Menghuraikan Data JSON dengan Struktur Dinamik Bersarang dalam Go?

Patricia Arquette
Lepaskan: 2024-11-19 16:25:02
asal
248 orang telah melayarinya

How to Parse JSON Data with Nested Dynamic Structures in Go?

Go Decoding of JSON Nested Dynamic Structure

Perbincangan ini meneroka cabaran menghuraikan data JSON dengan struktur dinamik bersarang dalam Pergi.

Masalah:

Sampel data JSON mengandungi struktur bersarang dengan kunci dinamik, seperti nombor telefon, seperti yang dilihat di bawah:

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {...},
        "79105432212": {...}
    },
    "balance": 2676.18
}
Salin selepas log masuk

Kod sampel yang disediakan cuba menggunakan senarai nombor telefon tetap untuk memodelkan struktur bersarang, tetapi pendekatan ini gagal kerana sifat dinamik nombor telefon kekunci.

Penyelesaian:

Untuk mengendalikan struktur dinamik bersarang, seseorang harus menggunakan peta dan bukannya senarai tetap untuk memodelkan data. Untuk contoh ini, struktur data berikut boleh digunakan:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}
Salin selepas log masuk

Dalam struktur yang dikemas kini ini, map[string]SMSPhone digunakan untuk mewakili objek "sms" bersarang, di mana kekunci peta sepadan dengan dinamik nombor telefon.

Untuk menyahmarshal data JSON ke dalam struktur ini, kod berikut boleh digunakan:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)
Salin selepas log masuk

Hasilnya akan menjadi struct Go dengan peta yang mengandungi data nombor telefon dinamik bersarang.

Soalan berkaitan yang mempamerkan penggunaan peta untuk struktur dinamik dalam Go termasuk:

  • Cara menghuraikan/menyahserli JSON dinamik di Golang
  • Cara menyahmarshal JSON dengan nama medan yang tidak diketahui untuk distrukturkan golang?
  • Unmarshal JSON dengan medan yang tidak diketahui
  • Unmarshal json string kepada struct yang mempunyai satu elemen struct itu sendiri

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data JSON dengan Struktur Dinamik Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan