Mengakses Tatasusunan JSON Bersarang dalam Go
Dalam Go, cabaran timbul apabila mengakses tatasusunan JSON bersarang selepas menyahmarshall. Apabila cuba mendapatkan semula elemen daripada tatasusunan "objek" dalam respons, ralat "antara muka jenis {} tidak menyokong pengindeksan" mungkin ditemui.
Memahami Masalah
Secara lalai, modul JSON dalam Go mewakili tatasusunan sebagai hirisan []antara muka{} dan kamus sebagai peta[rentetan]antara muka{} peta. Oleh itu, apabila menyahkod ke dalam pembolehubah{} antara muka, mengakses elemen bersarang menggunakan pengindeksan secara langsung akan gagal.
Penyelesaian: Taip Penegasan
Satu pendekatan untuk menangani isu ini adalah melalui jenis penegasan. Ini melibatkan penukaran antara muka{} pembolehubah kepada jenis konkrit asas. Contohnya, untuk mengekstrak ITEM_ID daripada objek pertama dalam tatasusunan "objek":
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
Taip Penegasan dengan Semakan Ralat
Apabila melakukan penegasan jenis, ia adalah penting untuk menggabungkan pemeriksaan ralat untuk mengendalikan penukaran yang salah. Contoh:
<code class="go">objects, ok := result["objects"].([]interface{}) if !ok { // Handle type conversion error }</code>
Menyahkod ke dalam Struktur
Penyelesaian alternatif, disyorkan untuk JSON dengan format yang diketahui, ialah menyahkod terus ke dalam struktur tersuai. Tentukan struct untuk memadankan struktur JSON, dan nyahkod ke dalamnya:
<code class="go">type Result struct { Query string Count int Objects []struct { ItemId string ProdClassId string Available int } }</code>
Ini membolehkan anda mengakses data secara langsung, menghapuskan keperluan untuk penegasan jenis:
<code class="go">var result Result json.Unmarshal(payload, &result) fmt.Println(result.Objects[0].ItemId)</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Tatasusunan JSON Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!