Go 中 JSON Unmarshal to Structure 何時回傳錯誤?
Go 中,json.Unmarshal 函數嘗試解碼 JSON 格式位元組到目標資料結構。雖然它成功解析並填充來源 JSON 中具有匹配名稱的字段,但當值與目標結構不對應時,它不會引發錯誤。
但是,json.Unmarshal 在以下情況下會遇到錯誤:
語法錯誤:
如果JSON 輸入在語法上不正確, json.Unmarshal 將會回傳錯誤。例如,如果缺少必要的引號,解碼器將無法解析 JSON。
type A struct { Name string `json:"name"` } data := []byte(`{"name":what?}`) err := json.Unmarshal(data, &a) fmt.Println(err) // prints character 'w' looking for beginning of value
JSON 值無法由目標類型表示:
如果JSON值的類型無法轉換為目標結構中對應欄位的類型,json.Unmarshal將傳回錯誤。例如,如果嘗試將JSON 布林值指派給字串欄位:
data := []byte(`{"name":false}`) type B struct { Name string `json:"name"` } var b B err = json.Unmarshal(data, &b) fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
其他實作細節:
除了語法和型別轉換錯誤之外, json. Unmarshal 也可能在其他不常見的情況下回傳錯誤。請參閱 Go 文件以取得更詳盡的清單。
以上是Go 中何時 `json.Unmarshal` 回傳錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!