Menyahkod JSON Bersarang dan Mengendalikan Isu Penegasan Jenis
Apabila mendapatkan semula data JSON bersarang, adalah penting untuk mengendalikan penegasan jenis dengan sewajarnya untuk mengelakkan ralat masa jalan. Satu ralat sedemikian ialah "operasi tidak sah: antara muka jenis {} tidak menyokong pengindeksan."
Ralat ini biasanya berlaku apabila anda cuba mengindeks nilai antara muka{} seolah-olah ia peta atau kepingan, seperti dalam contoh berikut:
<code class="go">var d interface{} json.NewDecoder(response.Body).Decode(&d) test := d["data"].(map[string]interface{})["type"]</code>
Untuk menyelesaikan isu ini, anda perlu melakukan penegasan jenis tambahan untuk menukar nilai antara muka{} kepada jenis yang dijangkakan. Dalam kes ini, anda akan mula-mula menukar antara muka{} kepada peta[rentetan]antara muka{}, kemudian mengakses medan "data" dan menukarnya kepada peta[rentetan]antara muka{} sebelum akhirnya mengakses medan "jenis".
<code class="go">test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]</code>
Sebagai alternatif, anda boleh mengisytiharkan d sebagai peta jenis[rentetan]antara muka{} secara langsung, menghapuskan keperluan untuk penegasan jenis awal:
<code class="go">var d map[string]interface{} json.NewDecoder(response.Body).Decode(&d) test := d["data"].(map[string]interface{})["type"]</code>
Jika anda kerap melakukan penegasan jenis yang serupa, pertimbangkan untuk menggunakan perpustakaan seperti github.com/icza/dyno untuk memudahkan proses.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan \'operasi tidak sah: antara muka jenis {} tidak menyokong pengindeksan\' Ralat Apabila Menyahkod JSON Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!