Rumah >pembangunan bahagian belakang >Golang >Bolehkah `pengekodan/json` Go Mengeluarkan Sebahagian JSON ke dalam Peta?
Menyahkan sebahagian JSON ke dalam Peta dalam Go
Masalah:
Pertimbangkan senario di mana pelayan Go menerima data JSON yang terkandung dalam objek dengan pasangan kunci/nilai. Setiap kunci sepadan dengan jenis nilai tertentu, dan pelayan perlu menyahmarshal nilai ke dalam jenis struct yang sesuai mengikut kunci. Persoalannya, bolehkah ini dicapai menggunakan pakej "pengekodan/json"?
Penyelesaian:
Untuk mencapai ini, kita boleh menyahmarshalkan sebahagian data JSON ke dalam peta pasangan nilai kunci, dengan kuncinya adalah rentetan dan nilainya adalah contoh json.RawMessage. RawMessage mewakili data JSON yang tidak diproses, membolehkan kami menguraikannya lagi ke dalam struktur atau jenis tertentu.
Berikut ialah kod untuk ditunjukkan:
import ( "encoding/json" "fmt" ) func main() { data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`) var objmap map[string]json.RawMessage err := json.Unmarshal(data, &objmap) if err != nil { // Handle error } // Example: Unmarshal sendMsg value into a struct type sendMsg struct { User string Msg string } var s sendMsg err = json.Unmarshal(objmap["sendMsg"], &s) if err != nil { // Handle error } fmt.Println(s) }
Contoh Penggunaan:
Dalam contoh di atas, data JSON mula-mula dibongkar menjadi a peta[rentetan]json.RawMessage. Kemudian, untuk menghuraikan nilai tertentu seperti sendMsg, kami boleh menyahmarshalkan RawMessage yang sepadan ke dalam struct yang ditakrifkan dalam program.
Teknik ini membolehkan pengendalian data JSON yang fleksibel dan cekap dengan berbilang pasangan nilai kunci, di mana nilai boleh dipecahkan kepada jenis yang berbeza berdasarkan kekunci.
Atas ialah kandungan terperinci Bolehkah `pengekodan/json` Go Mengeluarkan Sebahagian JSON ke dalam Peta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!