Bagaimana untuk Menyahkod JSON dengan Kekunci Bersarang Dinamik dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-25 12:01:15
asal
713 orang telah melayarinya

How to Decode JSON with Dynamic Nested Keys in Go?

JSON Nested Dynamic Structures Go Decoding

Dalam senario ini, respons JSON mengandungi kunci dinamik dalam objek "sms" bersarang. Kaedah penyahkodan struktur konvensional akan gagal kerana nombor telefon yang tidak diketahui sebagai kunci.

Penyelesaian: Peta dan Pengendalian Kunci Dinamik

Untuk menyahsiri data sedemikian dengan berkesan, struktur data peta bekerja. Kod yang dipinda di bawah memperkenalkan peta[rentetan]SMSPhone untuk memodelkan objek "sms":

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

Proses Unmarshaling

Dengan peta ini disediakan, unmarshaling proses kini boleh mengendalikan nombor telefon dinamik dengan betul:

var result SMSSendJSON

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

Contoh Output

Peta hasil akan mengandungi nombor telefon sebagai kunci dan struktur SMSPhone yang berkaitan:

{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}
Salin selepas log masuk

Pendekatan ini membolehkan penyahkodan respons JSON yang cekap dengan struktur bersarang dinamik.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod JSON dengan Kekunci Bersarang Dinamik 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