当前位置: 首页 > 面试题库 >

panic:json:无法将数组解组为main类型的Go值。

彭开畅
2023-03-14
问题内容

你想达到什么目的?

我正在尝试从JSON API解析数据。

粘贴显示问题的代码部分。

package main

import (
        "encoding/json"
        "fmt"
        "io/ioutil"
        "net/http"
)

type Structure struct {
        stuff []interface{}
}

func main() {
        url := "https://api.coinmarketcap.com/v1/ticker/?start=0&limit=100"
        response, err := http.Get(url)
        if err != nil {
                panic(err)
        }   
        body, err := ioutil.ReadAll(response.Body)
        if err != nil {
                panic(err)
        }   
        decoded := &Structure{}
        fmt.Println(url)
        err = json.Unmarshal(body, decoded)
        if err != nil {
                panic(err)
        }   
        fmt.Println(decoded)
}

您期望结果如何?

我希望代码返回接口对象列表。

您得到的实际结果是什么?

我收到一个错误: panic: json: cannot unmarshal array into Go value of type main.Structure


问题答案:

该应用程序正在将JSON数组解组到结构。解组切片:

 var decoded []interface{}
 err = json.Unmarshal(body, &decoded)

考虑解组为[] map [string]字符串或[] Tick,其中Tick是

 type Tick struct {
     ID string
     Name string
     Symbol string
     Rank string
     ... and so on
}


 类似资料:
  • 问题内容: json:无法将数组解组为类型的Go值 配置json: 和我的golang代码是这样的: json解析代码: 问题答案: 您的类型是造成问题的原因。摆脱它,它的工作原理是: 游乐场:https://play.golang.org/p/Prt1j7ePCZ。

  • 问题内容: 我有结构 我确实在HTML页面中写入JSON字节。jQuery修改对象中的字段并使用jQueries对对象进行编码,并且jQuery将字符串发布到Go处理程序。 编码为字符串的字段。 已发送:已收到: 问题在于无法解组该JSON,因为不再是整数。 处理此类数据的最佳方法是什么?我不希望手动转换每个字段。我希望编写紧凑,无错误的代码。 行情还不错。JavaScript不能与int64配合

  • 问题内容: 我有一项通过REST为我提供属性的服务。现在,我想将身体解组为属性结构。请查看此操场示例:单击。当我只有一个财产时,可以轻松将其编组为。但是,服务器发出的ACTUAL响应有所不同。我要解组的实际响应是这样的: 不幸的是,我不知道如何解组。有人可以指出正确的方向吗? 问题答案: 您需要解组一片属性:http : //play.golang.org/p/eRgjfBHypH

  • 问题内容: 我得到以下数据: 通过websocket,我想将其解组到 使用以下命令解组它: 但我不断收到错误: json:无法将字符串解组到类型为feed.OrderBookItem的Go结构字段OrderBookResult.bids中 当我将结构更改为 有用。我希望将它们定义为它们是什么。我必须改变什么? 问题答案: 如错误所示: json:无法将字符串解组到类型为feed.OrderBook

  • 问题内容: 我有以下JSON数据: 使用JSON-to-Go,我得到以下Go类型定义: 使用此代码(play.golang.org) 我得到错误 我不明白为什么。你能帮助我吗? 问题答案: JSON源是单个对象,但是您尝试将其解组为切片。将类型更改为(非切片): 然后输出(在Go Playground上尝试):

  • 问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。