理解JSON 反序列化中的介面斷言
在Go 中,將JSON 資料反序列化為特定的資料結構有時會導致接口轉換錯誤。當嘗試將介面類型斷言為不同的結構類型時,通常會發生這種情況。
考慮以下範例:
type Data struct { Content string Links []string }
將 JSON 反序列化為 Data 類型的變數時,必須斷言介面變數 (anInterface) 包含預期的資料類型。分配以下表達式將導致執行時間錯誤:
AData2 = anInterface.(Data)
發生此錯誤是因為 Go 期望 anInterface 是一個 map[string]interface{},而它實際上包含一個 Data 類型的物件。要解決這個問題,請確保 anInterface 引用一個在結構上與 Data 相容的值至關重要。
正確的反序列化方法
將JSON 資料反序列化為資料結構就是直接解組到該變數:
var AData2 Data err := json.Unmarshal([]byte(value), &AData2) if err != nil { panic(err) }
透過這樣做,Go 會自動處理JSON 和所需資料類型之間的轉換,確保在執行時不會出現類型斷言錯誤。
以上是在 Go 中反序列化 JSON 時如何避免介面斷言錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!