Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod JSON dengan Kekunci Bersarang Dinamik dalam Go?

Bagaimana untuk Menyahkod JSON dengan Kekunci Bersarang Dinamik dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-25 12:01:15744semak imbas

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

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

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}

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!

Kenyataan:
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