首頁 > 後端開發 > Golang > 為什麼 json.Unmarshal 有時會返回映射而不是結構?

為什麼 json.Unmarshal 有時會返回映射而不是結構?

Linda Hamilton
發布: 2024-10-25 17:17:02
原創
265 人瀏覽過

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

解決 json.Unmarshal 輸出中的差異

json.Unmarshal 是一個多功能函數,它使用 JSON 字串中的值填充資料結構。然而,當預期輸出與實際輸出不同時,會出現一個常見的困惑,結果結構是映射而不是預期的結構。為了解決這種差異,我們深入研究程式碼並探索底層機制。

在給定的範例中,「壞」函數將名為 ping 的介面{}指派給 Ping 結構體。但是,當呼叫 json.Unmarshal 時,它會遇到一個沒有具體類型資訊的抽象介面。因此,它將傳入的 JSON 解釋為映射,這解釋了觀察到的行為。

要修正此問題,我們需要明確地向 json.Unmarshal 提供預期的結構。這可以透過將 interface{} 指派給指向 Ping 結構的指標來實現。透過進行這種微妙的更改,我們向函數傳達了它應該使用的底層類型。或者,我們可以使用反射來建立指向 Ping 結構的新指標並將其反序列化到其中,然後將值複製回 ping。

透過這些修改,json.Unmarshal 函數成功將 JSON 編組到所需的位置Ping struct,消除了差異並符合我們的期望。透過了解函數的複雜性,我們可以利用它的強大功能來可靠且準確地填充資料結構。

以上是為什麼 json.Unmarshal 有時會返回映射而不是結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板