Bagaimanakah Saya Boleh Menyahmarshal Tatasusunan JSON dengan Jenis Data Campuran dalam Go?

Patricia Arquette
Lepaskan: 2024-11-27 07:06:10
asal
298 orang telah melayarinya

How Can I Unmarshal JSON Arrays with Mixed Data Types in Go?

Menyahmarshaling Tatasusunan JSON dengan Jenis Nilai Campuran

Menyahmarshall array JSON yang mengandungi nilai pelbagai jenis boleh menimbulkan cabaran dalam Go kerana keperluan untuk definisi jenis eksplisit dalam tatasusunan Go.

Kes Kajian:

Pertimbangkan contoh JSON yang tidak sah berikut:

["NewYork", 123]
Salin selepas log masuk

Percubaan untuk menyahkod tatasusunan ini ke dalam tatasusunan Go akan gagal kerana tatasusunan Go memerlukan jenis tetap, iaitu tidak diketahui dalam kes ini.

Penyelesaian:

Untuk mengatasi ini pengehadan, Go menyediakan jenis antara muka{}, yang membenarkan penyimpanan nilai apa-apa jenis. Dengan menggunakan antara muka{}, adalah mungkin untuk menyahmarshal tatasusunan JSON yang mengandungi jenis nilai campuran, seperti yang ditunjukkan di bawah:

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)
}
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan jenis tersuai UntypedJson sebagai peta kunci rentetan kepada kepingan antara muka{}. Tatasusunan JSON kemudiannya dipisahkan ke dalam contoh UntypedJson. Pernyataan fmt.Printf memaparkan data yang tidak dikawal, yang mengandungi nilai bercampur daripada tatasusunan JSON.

Dengan menggunakan jenis antara muka{}, ia menjadi mungkin untuk menyahmarshal tatasusunan JSON yang mengandungi nilai pelbagai jenis, memberikan lebih banyak penyelesaian yang fleksibel dan serba boleh untuk senario data yang kompleks.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Tatasusunan JSON dengan Jenis Data Campuran 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