了解 JSON 解組行為
嘗試使用 json.Unmarshal 解組 JSON資料時,了解套件如何與變數類型互動至關重要.
介面謬誤
假設json.Unmarshal 自動利用與介面關聯的具體結構是一種常見的誤解。該包需要有關所需解組類型的明確指導。
範例:迷失在翻譯中
考慮提供的範例程式碼:
type Foo struct { Bar string `json:"bar"` } func getFoo() interface{} { return Foo{"bar"} }
The目的是讓getFoo() 回傳一個Foo 結構,但由於它被分配給一個接口,所以它被視為地圖。這是因為當介面傳遞給 json.Unmarshal 時,套件將其解釋為空介面並產生 JSON 物件的映射。
解決方案:明確類型宣告
要解決此問題,請明確傳遞指向所需結構類型的指標介面:
func getFoo() interface{} { return &Foo{"bar"} }
現在,當json.Unmarshal 接收介面時,它會識別指向結構體的指針,並正確地將JSON資料解組到結構體字段中。
關鍵要點:
請記住,json.Unmarshal 依賴於提供的顯式類型資訊來確定解組目的地。如果您希望它使用特定的結構,則必須在介面中明確傳遞該類型的值或指向該類型的指標。
以上是`json.Unmarshal` 如何處理接口,以及為什麼顯式類型宣告至關重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!