Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membongkar Separa Data JSON ke dalam Peta Go?

Bagaimana untuk Membongkar Separa Data JSON ke dalam Peta Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 15:51:11585semak imbas

How to Partially Unmarshal JSON Data into a Go Map?

Cara Menyahmarshal Separa JSON ke dalam Peta dalam Go

Menyahmarshal data JSON dalam Go boleh menjadi mudah, tetapi cabaran timbul apabila berurusan dengan nested objek yang kuncinya menunjukkan jenis data. Untuk menangani perkara ini, anda boleh memanfaatkan pakej "pengekodan/json".

Dalam kod yang disediakan, anda cuba untuk memetakan data JSON ke dalam peta[rentetan][]bait, dengan berkesan menukarnya menjadi kunci -nilai pasangan rentetan dan JSON mentah. Walau bagaimanapun, fungsi json.MapObject tidak wujud, menjadikan penyelesaian ini tidak dapat dilaksanakan.

Sebaliknya, anda boleh menggunakan map[string]json.RawMessage untuk mencapai matlamat anda. RawMessage ialah jenis legap yang memegang JSON yang tidak dihuraikan. Menggunakan pendekatan ini, kod di bawah menyahmarshal data JSON yang disediakan ke dalam pembolehubah objmap:

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

Kini, anda boleh mengakses pasangan nilai kunci individu dalam objmap untuk menghuraikan data JSON dengan lebih lanjut. Contohnya, untuk menghuraikan nilai "sendMsg":

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

Begitu juga, anda boleh menghuraikan nilai "say" sebagai rentetan:

var str string
err = json.Unmarshal(objmap["say"], &str)

Nota: Ingat untuk mengeksport pembolehubah dalam struct sendMsg anda untuk membolehkan unmarshalling yang betul. Contohnya:

type sendMsg struct {
    User string
    Msg  string
}

Anda boleh mendapatkan contoh yang berkesan di https://play.golang.org/p/OrIjvqIsi4-.

Atas ialah kandungan terperinci Bagaimana untuk Membongkar Separa Data JSON ke dalam Peta 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