栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

解封没有密钥的嵌套json

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解封没有密钥的嵌套json

从@mkopriva和@chmike找到解决方案:

感谢你们!

package mainimport (    "fmt"    "time"    "encoding/json")var data = []byte(`{    "error": [],    "result": {        "linkUSD": { "asks": [     ["2.049720", "183.556", 1576323009],     ["2.049750", "555.125", 1576323009],     ["2.049760", "393.580", 1576323008],     ["2.049980", "206.514", 1576322995] ], "bids": [     ["2.043800", "20.691", 1576322350],     ["2.039080", "755.396", 1576323007],     ["2.036960", "214.621", 1576323006],     ["2.036930", "700.792", 1576322987] ]        }    }}`)type Response struct {    Error  []interface{}          `json:"error"`    Result map[string]Order `json:"result"`}type Order struct {    Asks []BitfinexOrder `json:"asks"`    Bids []BitfinexOrder `json:"bids"`}type BitfinexOrder struct {    Price     string    Volume    string    Timestamp time.Time}// UnmarshalJSON depre a BifinexOrder.func (b *BitfinexOrder) UnmarshalJSON(data []byte) error {    var packedData []json.Number    err := json.Unmarshal(data, &packedData)    if err != nil {        return err    }    b.Price = packedData[0].String()    b.Volume = packedData[1].String()    t, err := packedData[2].Int64()    if err != nil {        return err    }    b.Timestamp = time.Unix(t, 0)    return nil}func main() {    res := &Response{}    if err := json.Unmarshal(data, res); err != nil {        panic(err)    }    for key, value := range res.Result {        fmt.Println(key)        for i, ask := range value.Asks { fmt.Printf("Asks[%d] = %#vn", i, ask)        }        for i, bid := range value.Bids { fmt.Printf("Bids[%d] = %#vn", i, bid)        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号