首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解析Go中的数组json?

如何解析Go中的数组json?
EN

Stack Overflow用户
提问于 2017-03-25 07:30:52
回答 2查看 85关注 0票数 0

我有以下JSON数据:

代码语言:javascript
复制
[
    {
        "id": "bitcoin", 
        "name": "Bitcoin", 
        "symbol": "BTC", 
        "rank": "1", 
        "price_usd": "960.094", 
        "price_btc": "1.0", 
        "24h_volume_usd": "438149000.0", 
        "market_cap_usd": "15587054083.0", 
        "available_supply": "16234925.0", 
        "total_supply": "16234925.0", 
        "percent_change_1h": "-0.76", 
        "percent_change_24h": "-7.78", 
        "percent_change_7d": "-14.39", 
        "last_updated": "1490393946"
    }
]

我有两个结构:

代码语言:javascript
复制
type Valute struct {
    Id     string `json:"id"`
    Name   string `json:"name"`
    Symbol string `json:"symbol"`
}

type Currency struct {
    Result []Valute
}

我想解析这个调用返回的数组:

代码语言:javascript
复制
resp, err := http.Get("https://api.coinmarketcap.com/v1/ticker/?limit=1")
defer resp.Body.Close()
v := Currency{}
body, err := ioutil.ReadAll(resp.Body)
json.Unmarshal(body, &v)

但这对我不起作用。货币是空的。

它与一个数组一起工作:

代码语言:javascript
复制
var valutes []Valute
json.Unmarshal(body, &valutes)

但我想用一个结构。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-25 07:46:50

您的货币结构只需实现json.Unmarshaler接口即可。

代码语言:javascript
复制
func (c *Currency) UnmarshalJSON(b []byte) error {
    return json.Unmarshal(b, &c.Result)
}
票数 3
EN

Stack Overflow用户

发布于 2017-03-25 09:25:28

您也可以更改为json.Unmarshal(body, &v.Result)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43013758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档