首頁 > 後端開發 > Golang > Go 中何時 `json.Unmarshal` 回傳錯誤?

Go 中何時 `json.Unmarshal` 回傳錯誤?

Patricia Arquette
發布: 2024-11-10 11:00:03
原創
461 人瀏覽過

When Does `json.Unmarshal` Return an Error in Go?

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

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