Berikut ialah beberapa pilihan tajuk, memfokuskan pada masalah dan penyelesaian: **Soalan Langsung

Linda Hamilton
Lepaskan: 2024-10-25 11:43:02
asal
254 orang telah melayarinya

Here are a few title options, focusing on the problem and solution:

**Direct Question

JSON Menyahkod ke dalam Structs vs. Maps

Dalam senario yang diterangkan, aplikasi menerima antara muka{} yang mengandungi struct yang sepadan dengan JSON struktur diterima sebagai tatasusunan bait. Walau bagaimanapun, selepas penyahkodan JSON, hasilnya ialah peta dan bukannya struct yang dijangkakan.

Tingkah laku ini disebabkan oleh cara json.Unmarshal mengendalikan penunjuk. Dengan merujuk antara muka{} yang pada asalnya memegang struct, proses penyahkodan tidak dapat menentukan jenis asas. Akibatnya, ia mengembalikan peta ringkas dan bukannya struct yang dikehendaki.

Untuk membetulkan isu ini, dua pendekatan boleh dipertimbangkan:

1. Hantaran Antara Muka Terus:

Lepaskan penuding kepada struct terus ke json.Unmarshal sebagai antara muka abstrak:

<code class="go">var ping interface{} = &Ping{}
deserialize([]byte(`{"id":42}`), ping)</code>
Salin selepas log masuk

2. Penciptaan Penunjuk Berasaskan Refleksi:

Jika penuding terus kepada struct tidak tersedia, gunakan pantulan untuk mencipta penuding baharu, nyahserikannya ke dalamnya dan salin semula nilai:

<code class="go">var ping interface{} = Ping{}
nptr := reflect.New(reflect.TypeOf(ping))
deserialize([]byte(`{"id":42}`), nptr.Interface())
ping = nptr.Interface()</code>
Salin selepas log masuk

Dengan mengguna pakai salah satu pendekatan ini, proses penyahkodan boleh mengenal pasti dengan betul struktur asas dan mengisi medannya daripada data JSON.

Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, memfokuskan pada masalah dan penyelesaian: **Soalan Langsung. 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!