Apabila bekerja dengan respons JSON dalam Go, mengakses elemen dalam tatasusunan bersarang boleh menimbulkan cabaran. Selalunya, ralat timbul seperti "antara muka jenis {} tidak menyokong pengindeksan" apabila cuba mendapatkan semula titik data tertentu.
Untuk menyelesaikannya, adalah penting untuk memahami sifat asas respons JSON dalam Go. Secara lalai, tatasusunan diwakili sebagai hirisan []antara muka{}, manakala kamus dipancarkan sebagai peta[rentetan]antaramuka{} peta. Akibatnya, pembolehubah antara muka kekurangan sokongan untuk pengindeksan.
Untuk mengakses elemen bersarang, penegasan taip menjadi perlu. Satu pendekatan ialah melakukan perkara berikut tanpa menyemak ralat:
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
Walau bagaimanapun, kaedah ini boleh menyebabkan panik jika jenis tidak sejajar. Pendekatan yang lebih mantap ialah menggunakan borang dua pulangan dan mengendalikan kemungkinan ralat:
<code class="go">objects, ok := result["objects"].([]interface{}) if !ok { // Handle error }</code>
Jika JSON anda mengikut struktur yang konsisten, pertimbangkan penyahkodan terus kepada jenis tersuai:
<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>
Setelah dinyahkod, anda boleh mengakses elemen bersarang dengan lancar seperti result.Objects[0].ItemId.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Tatasusunan JSON Bersarang dengan Selamat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!