Bagaimana untuk Mengelakkan \'operasi tidak sah: antara muka jenis {} tidak menyokong pengindeksan\' Ralat Apabila Menyahkod JSON Bersarang?

Mary-Kate Olsen
Lepaskan: 2024-11-01 17:23:02
asal
185 orang telah melayarinya

How to Avoid

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!