JSON响应的结构体

huangapple go评论83阅读模式
英文:

Struct for JSON Response

问题

我正在努力弄清楚这个JSON响应的类型结构应该如何设置。

来自CryptoWatch的https://api.cryptowat.ch/markets/kraken/btcusd/ohlc?periods=60

{
"result": {
"60": [
[
1490733900,
1027.001,
1027.001,
1027,
1027,
0.024999999
],
[
1490733960,
1027,
1027,
1027,
1027,
12.61904
],
[
1490778360,
1037.749,
1037.749,
1037.749,
1037.749,
0.0052474597
]
]
},
"allowance": {
"cost": 1234,
"remaining": 456677
}
}

  1. 我尝试了JSON-TO-GoLang-Struct服务。

    type AutoGenerated struct {
    Result struct {
    Num60 []struct {
    Num0 int json:"0"
    Num1 float64 json:"1"
    Num2 float64 json:"2"
    Num3 int json:"3"
    Num4 int json:"4"
    Num5 float64 json:"5"
    } json:"60"
    } json:"result"
    Allowance struct {
    Cost int json:"cost"
    Remaining int json:"remaining"
    } json:"allowance"
    }

代码格式似乎有问题 :/

当我尝试解码时,它似乎卡在数组到结构体的错误上。

  1. 我不想为这个结构使用map+interface方法。
英文:

I'm trying to workout how the type-struct should be for this JSON response.
from CryptoWatch https://api.cryptowat.ch/markets/kraken/btcusd/ohlc?periods=60

{
  "result": {
    "60": [
      [
        1490733900,
        1027.001,
        1027.001,
        1027,
        1027,
        0.024999999
      ],
      [
        1490733960,
        1027,
        1027,
        1027,
        1027,
        12.61904
      ],
      [
        1490778360,
        1037.749,
        1037.749,
        1037.749,
        1037.749,
        0.0052474597
      ]
    ]
  },
  "allowance": {
    "cost": 1234,
    "remaining": 456677
  }
}
  1. I've tried the JSON-TO-GoLang-Struct service.

    type AutoGenerated struct {
    Result struct {
    Num60 []struct {
    Num0 int json:"0"
    Num1 float64 json:"1"
    Num2 float64 json:"2"
    Num3 int json:"3"
    Num4 int json:"4"
    Num5 float64 json:"5"
    } json:"60"
    } json:"result"
    Allowance struct {
    Cost int json:"cost"
    Remaining int json:"remaining"
    } json:"allowance"
    }

code-formatting seems broken :/

It seems to get stuck on array-to-struct error when i tried to decode it.

  1. I don't want to use the map+interface method for this struct.

答案1

得分: 1

给你,你也可以将结果放在map[string][][]float64中。但我认为这种方式更易读。

type Result [][]float64

type Response struct {
    Result    map[string]Result `json:"result"`
    Allowance struct {
        Cost      int `json:"cost"`
        Remaining int `json:"remaining"`
    } `json:"allowance"`
}
英文:

Here you go. You can put the result as map[string][][]float64 also. But this is more readable I think.

type Result [][]float64

type Response struct {
	Result    map[string]Result `json:"result"`
	Allowance struct {
		Cost      int `json:"cost"`
		Remaining int `json:"remaining"`
	} `json:"allowance"`
}

huangapple
  • 本文由 发表于 2017年3月29日 17:09:47
  • 转载请务必保留本文链接:https://go.coder-hub.com/43089138.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定