gpt4 book ai didi

json - Go : When will json. Unmarshal to struct 返回错误?

转载 作者:IT王子 更新时间:2023-10-29 01:06:37 27 4
gpt4 key购买 nike

假设我有一个类似的结构

type A struct{
name string`json:"name"`
}

然后在主要我有代码

var jsonString string = `{"status":false}`
var a A
error := json.Unmarshal([]byte(jsonString),&a)

显然上面的代码产生了一个 nil 错误,不管 json 格式是否不同。 Go 中的 json.Unmarshal() 什么时候返回错误?

最佳答案

如果源中的值与目标中的值不对应,JSON 解码器不会报告错误。例如,如果源包含字段“status”,但目标不包含,则不会出错。

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

目标类型无法表示的 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

(这是值不能用目标类型表示的一个示例。还有更多。)

playground example

关于json - Go : When will json. Unmarshal to struct 返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com