在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中文網其他相關文章!