Menyahmarshalling JSON Arrays with Mixed Data Types
Tugas menyahmarshalling JSON arrays mengandungi nilai jenis data yang berbeza selalunya boleh menimbulkan cabaran. Sebagai contoh, pertimbangkan tatasusunan JSON berikut:
{["NewYork",123]}
Isu:
Pertama sekali, adalah penting untuk ambil perhatian bahawa JSON yang disediakan tidak betul dari segi sintaksis. Objek JSON memerlukan kunci untuk setiap nilai, jadi perwakilan yang betul ialah sama ada {"key":["NewYork",123]} atau hanya ["NewYork",123].
Tambahan pula, apabila berurusan dengan JSON tatasusunan terdiri daripada pelbagai jenis data, masalah timbul apabila tatasusunan Go memerlukan jenis tertentu. Ini boleh membuatkan anda tertanya-tanya cara mengendalikan situasi sedemikian.
Penyelesaian:
Kunci untuk menangani isu ini ialah menggunakan antara muka jenis{}. Ia membolehkan anda mengendalikan nilai pelbagai jenis tanpa memerlukan penukaran jenis eksplisit. Berikut ialah contoh kod yang menunjukkan cara ia berfungsi:
import ( "encoding/json" "fmt" ) const j = `{"NYC": ["NewYork",123]}` type UntypedJson map[string][]interface{} func main() { ut := UntypedJson{} fmt.Println(json.Unmarshal([]byte(j), &ut)) fmt.Printf("%#v", ut) }
Dalam contoh ini, kami menggunakan UntypedJson sebagai jenis tersuai yang memetakan rentetan kepada kepingan antara muka{}. Dengan menggunakan jenis antara muka{}, kami boleh mengendalikan jenis data bercampur dalam tatasusunan JSON dengan mudah.
Output program ialah:
<nil> map[string][]interface{}{"NYC": \["NewYork" 123]}
Kesimpulan:
Dengan memanfaatkan jenis antara muka{}, pendekatan ini membolehkan anda menyahmarshal tatasusunan JSON dengan pelbagai data dengan berkesan jenis.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Tatasusunan JSON dengan Jenis Data Campuran dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!