首页 >后端开发 >Golang >为什么 JSON 将数组解组到 Go 结构中会导致恐慌?

为什么 JSON 将数组解组到 Go 结构中会导致恐慌?

Linda Hamilton
Linda Hamilton原创
2024-12-16 10:49:10780浏览

Why Does JSON Unmarshaling an Array into a Go Struct Cause a Panic?

Panic: JSON Unmarshal Array into Go Struct

尝试从 JSON API 解析数据时,遇到错误:“panic: json:无法将数组解组为 main.Structure 类型的 Go 值。”将 JSON 数组解组到 Go 结构时会出现此问题。

您的代码:

type Structure struct {
        stuff []interface{}
}

func main() {
        // ...

        decoded := &Structure{}
        err = json.Unmarshal(body, decoded)
}

预期结果:

您期望代码返回接口列表

实际结果:

相反,您收到一条错误,指示 JSON 数组无法解组到 Structure Go 值中。

解决方案:

要解决此问题,请考虑两个方法:

  1. 解编为切片:

    将行:

    decoded := &Structure{}

    替换为:

    var data []interface{}

    这会将 JSON 数组解组为一个切片接口。

  2. 解组到结构体切片:

    为响应数据结构创建特定的结构。例如:

    type Tick struct {
      ID string
      Name string
      Symbol string
      Rank string
      Price_USD string
    }

    然后,解组为这些结构的切片:

    var data []Tick
    err = json.Unmarshal(body, &data)

以上是为什么 JSON 将数组解组到 Go 结构中会导致恐慌?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn