Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengendalikan Tatasusunan Bersarang dalam Go JSON Unmarshalling?
Golang JSON: Mengendalikan Tatasusunan Bersarang dengan Menyahmarshalling
Dalam Go, apabila bekerja dengan tatasusunan JSON bersarang selepas unmarshalling, adalah penting untuk memahami ralat "antara muka jenis {} tidak menyokong pengindeksan." Ralat ini timbul apabila anda cuba mengakses elemen dalam tatasusunan JSON yang disimpan dalam pembolehubah{} antara muka.
Untuk menyelesaikan isu ini, anda perlu menggunakan penegasan jenis untuk menukar pembolehubah{} antara muka kepada pembolehubah jenis tatasusunan yang mendasari.
Perwakilan{} Antara Muka dalam Modul JSON
Modul JSON mewakili tatasusunan sebagai hirisan []antaramuka{} dan kamus sebagai peta[rentetan]antaramuka{ } memetakan apabila menyahkod ke dalam pembolehubah{} antara muka.
Mengakses Elemen Bersarang dengan Penegasan Jenis
Tanpa semakan ralat, anda boleh menavigasi tatasusunan JSON menggunakan penegasan jenis seperti berikut :
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penegasan jenis ini boleh panik jika jenis tidak sepadan. Untuk mengelakkan isu ini, anda boleh menggunakan borang dua pemulangan dan semak ralat:
<code class="go">objects, ok := result["objects"].([]interface{}) if !ok { // Handle error here }</code>
Menyahkod ke dalam Struktur untuk Akses yang Dipertingkat
Jika JSON data mengikut format yang konsisten, penyelesaian yang lebih cekap ialah menyahkodnya kepada jenis berstruktur. Contohnya, berdasarkan data yang disediakan:
<code class="go">type Result struct { Query string `json:"query"` Count int `json:"count"` Objects []struct { ItemId string `json:"ITEM_ID"` ProdClassId string `json:"PROD_CLASS_ID"` Available int `json:"AVAILABLE"` } `json:"objects"` }</code>
Dengan menyahkod ke dalam struktur ini, anda boleh mengakses ID item secara terus menggunakan result.Objects[0].ItemId. Pendekatan ini menghapuskan keperluan untuk penegasan jenis dan menyediakan kaedah selamat jenis untuk mengakses elemen bersarang.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Tatasusunan Bersarang dalam Go JSON Unmarshalling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!