Rumah > Artikel > pembangunan bahagian belakang > Mengapakah medan `Num` saya diabaikan apabila menyahmarshall JSON kepada struct terbenam dalam Go?
Menghapuskan JSON kepada Struktur Terbenam dalam Go
Penyahserialisasian data JSON ke dalam struktur terbenam boleh menimbulkan cabaran di Golang. Ambil contoh struct:
<code class="go">type Outer struct { Inner Num int } type Inner struct { Data string }</code>
Apabila menggunakan json.Unmarshal(data, &Outer{}), hanya medan Inner unmarshaled, mengabaikan medan Num. Untuk memahami sebab ini berlaku, adalah penting untuk ambil perhatian bahawa Inner dibenamkan dalam Outer.
Semasa JSON unmarshaler, pustaka memanggil unmarshaler on Outer, yang seterusnya memanggil unmarshaler on Inner. Akibatnya, fungsi Inner.UnmarshalJSON menerima keseluruhan rentetan JSON, yang diproses untuk Inner sahaja.
Untuk menyelesaikan isu ini, jadikan Inner medan eksplisit dalam Outer. Ini memastikan bahawa semasa pembongkaran JSON, medan Dalam dinyahmarshalih dengan betul dan medan Num ditetapkan berdasarkan data JSON:
<code class="go">Outer struct { I Inner // Make Inner an explicit field Num int `json:"Num"` }</code>
Pengubahsuaian ini membolehkan pembongkaran data JSON yang betul ke dalam struktur Luar, termasuk kedua-dua medan Dalam dan Num.
Atas ialah kandungan terperinci Mengapakah medan `Num` saya diabaikan apabila menyahmarshall JSON kepada struct terbenam dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!