首頁  >  文章  >  後端開發  >  為什麼在 Go 中將 JSON 解組到嵌入結構時我的“Num”字段被忽略?

為什麼在 Go 中將 JSON 解組到嵌入結構時我的“Num”字段被忽略?

Susan Sarandon
Susan Sarandon原創
2024-11-04 15:03:42189瀏覽

Why is my `Num` field ignored when unmarshalling JSON to an embedded struct in Go?

在Go 中將JSON 解組為嵌入式結構

將JSON 資料反序列化為嵌入式結構可能會給Golang 帶來挑戰。以結構體為例:

<code class="go">type Outer struct {
    Inner
    Num int
}

type Inner struct {
    Data string
}</code>

使用 json.Unmarshal(data, &Outer{}) 時,僅對 Inner 欄位進行解組,忽略 Num 欄位。要理解為什麼會發生這種情況,請務必注意 Inner 嵌入在 Outer 中。

在 JSON 解組期間,函式庫會呼叫 Outer 上的解組器,Outer 再呼叫 Inner 上的解組器。因此,Inner.UnmarshalJSON 函數接收整個 JSON 字串,並單獨為 Inner 處理字串。

要解決此問題,請將 Inner 設為 Outer 中的明確欄位。這確保了在JSON 解組期間,正確解組Inner 字段,並根據JSON 資料設定Num 字段:

<code class="go">Outer struct {
    I Inner // Make Inner an explicit field
    Num int `json:"Num"`
}</code>

此修改可以將JSON 資料正確解組到Outer 結構中,包括內部字段和數字欄位。

以上是為什麼在 Go 中將 JSON 解組到嵌入結構時我的“Num”字段被忽略?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn