登录
首页 >  Golang >  Go问答

Go : json.Unmarshal to struct 什么时候返回错误?

来源:Golang技术栈

时间:2023-04-30 12:24:28 457浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Go : json.Unmarshal to struct 什么时候返回错误?》,文章讲解的知识点主要包括golang,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

假设我有一个像

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

然后在主要我有代码

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

显然,无论 json 格式不同,上面的代码都会产生 nil 错误。json.Unmarshal() 什么时候会在 Go 中返回错误?

正确答案

如果源中的值与目标中的值不对应,则 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

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

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

游乐场示例

好了,本文到此结束,带大家了解了《Go : json.Unmarshal to struct 什么时候返回错误?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>