Go:json.Unmarshal何时会返回结构错误?
假设我有一个像
type A struct{ name string`json:"name"`
}
然后在主要我有代码
var jsonString string = `{"status":false}`var a A
error := json.Unmarshal([]byte(jsonString),&a)
显然,无论json格式不同,上述代码都会产生nil错误。Go中的json.Unmarshal()什么时候返回错误?
回答:
如果源中的值与目标中的值不对应,则JSON解码器不会报告错误。例如,如果源包含“状态”字段,这不是错误,但目标没有。
在其他情况下,Unmarshal函数确实会返回错误:
语法错误
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
类型不匹配
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
游乐场的例子
以上是 Go:json.Unmarshal何时会返回结构错误? 的全部内容, 来源链接: utcz.com/qa/421399.html