Mengapa json.Unmarshal Kadang-kadang Mengembalikan Peta Daripada Struct?

Linda Hamilton
Lepaskan: 2024-10-25 17:17:02
asal
192 orang telah melayarinya

Why Does json.Unmarshal Sometimes Return a Map Instead of a Struct?

Merungkai Percanggahan dalam json.Unmarshal Output

json.Unmarshal ialah fungsi serba boleh yang mengisi struktur data dengan nilai daripada rentetan JSON. Walau bagaimanapun, kebingungan biasa timbul apabila output yang dijangkakan berbeza daripada yang sebenar, dengan struktur yang terhasil ialah peta dan bukannya struct yang dimaksudkan. Untuk membongkar percanggahan ini, kami menyelami kod dan meneroka mekanisme asas.

Dalam contoh yang diberikan, fungsi "buruk" memperuntukkan antara muka{} bernama ping kepada struct Ping. Walau bagaimanapun, apabila json.Unmarshal digunakan, ia menghadapi antara muka abstrak tanpa maklumat jenis konkrit. Akibatnya, ia mentafsirkan JSON yang masuk sebagai peta, yang menerangkan tingkah laku yang diperhatikan.

Untuk membetulkan perkara ini, kami perlu menyediakan json.Unmarshal dengan struct yang dijangkakan secara eksplisit. Ini boleh dicapai dengan memberikan antara muka{} kepada penuding kepada struct Ping. Dengan membuat perubahan halus ini, kami menyampaikan kepada fungsi jenis asas yang sepatutnya berfungsi dengannya. Sebagai alternatif, kita boleh menggunakan pantulan untuk mencipta penuding baharu pada struct Ping dan menyahsirikannya, seterusnya menyalin nilai kembali ke ping.

Dengan pengubahsuaian ini, fungsi json.Unmarshal berjaya menyusun JSON ke dalam yang dikehendaki Ping struct, menghapuskan percanggahan dan memadankan jangkaan kami. Dengan memahami selok-belok fungsi, kami boleh memanfaatkan kuasanya untuk mengisi struktur data dengan pasti dan tepat.

Atas ialah kandungan terperinci Mengapa json.Unmarshal Kadang-kadang Mengembalikan Peta Daripada Struct?. 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!