Cara Memproses Tatasusunan JSON dalam Go
Pertanyaan memberikan cabaran dalam menghuraikan tatasusunan JSON dalam Go. Tatasusunan JSON ialah koleksi objek dan dalam contoh yang diberikan, data yang dikembalikan daripada panggilan API ialah tatasusunan objek kompleks.
Untuk menghuraikan tatasusunan ini, kita perlu mentakrifkan struct Go yang mencerminkan struktur objek dalam tatasusunan. Mari kita mulakan dengan mentakrifkan struct PublicKey:
type PublicKey struct { name string price string }
Seterusnya, kita perlu mentakrifkan struct KeysResponse untuk mewakili keseluruhan susunan objek PublicKey:
type KeysResponse struct { Collection []PublicKey }
Kami kemudiannya menyahmarshal JSON ke dalam pembolehubah jenis KeysResponse:
keys := make([]PublicKey, 0) err := json.Unmarshal([]byte(s), &keys) if err == nil { fmt.Printf("%+v\n", keys) } else { fmt.Println(err) fmt.Printf("%+v\n", keys) }
The Fungsi json.Unmarshal akan mengisi pembolehubah kunci secara automatik dengan data yang dihuraikan daripada JSON. Walau bagaimanapun, kod soalan asal mengandungi butiran yang diabaikan: medan struct PublicKey perlu dieksport (mulakan dengan huruf besar).
Selepas membuat perubahan ini, kod akan menghuraikan tatasusunan dan output JSON dengan betul keputusan dalam format yang diingini:
[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]
Perhatikan bahawa teks JSON dalam soalan mengandungi nama medan dengan huruf kecil, tetapi pakej json cukup pintar untuk memadankannya dengan medan eksport PublicKey struct.
Untuk struktur JSON yang lebih kompleks, adalah disyorkan untuk menggunakan tag struct untuk memetakan nama medan JSON secara eksplisit kepada medan struct. Selain itu, unmarshalling menjadi kepingan peta ([]map[string]interface{}) menyediakan pendekatan alternatif tetapi memerlukan pengindeksan manual dan penegasan jenis.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Tatasusunan JSON ke dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!