Mengapakah medan `Num` saya diabaikan apabila menyahmarshall JSON kepada struct terbenam dalam Go?

Susan Sarandon
Lepaskan: 2024-11-04 15:03:42
asal
245 orang telah melayarinya

Why is my `Num` field ignored when unmarshalling JSON to an embedded struct in 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>
Salin selepas log masuk

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

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!

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