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

回到顶部