私はこのようになりますJSONデータがあります。GolangのキーレスJSON配列をアンマーシャリングする方法は?
type TradeHistoryResponse []TradeHistoryInfo
type TradeHistoryInfo struct {
GlobalTradeID int64 `json:"globalTradeID"`
TradeID int64 `json:"tradeID"`
Date string `json:"date"`
Type string `json:"type"`
Rate float64 `json:"rate,string"`
Amount float64 `json:"amount,string"`
Total float64 `json:"total,string"`
}
そしてようにJSONデータを引っ張っ::私はタイプを定義することによって、このJSONをアンマーシャリングしようとした
[
{
"globalTradeID": 64201000,
"tradeID": 549285,
"date": "2016-11-11 23:51:58",
"type": "buy",
"rate": "10.33999779",
"amount": "0.02176472",
"total": "0.22504715"
},
{
"globalTradeID": 64200631,
"tradeID": 549284,
"date": "2016-11-11 23:48:39",
"type": "buy",
"rate": "10.33999822",
"amount": "0.18211700",
"total": "1.88308945"
}...
]
を
//Read response
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("[Poloniex] (doRequest) Failed to parse response for query to %s! (%s)", reqURL, err.Error())
}
//Convert JSON to struct
var THR TradeHistoryResponse
err = json.Unmarshal(body, &THR)
if err != nil {
return nil, fmt.Errorf("[Poloniex] (doRequest) Failed to convert response into JSON for query to %s! (%s)", reqURL, err.Error())
}
次のエラーが発生します。
(json: cannot unmarshal object into Go value of type poloniex.TradeHistoryResponse)
Unmarshallが機能しない理由は、配列がキーなしであるためです。
この問題を解決するにはどうすればよいかについていくつかの説明があります。
「配列がキーレス」であること、またはその問題が何であるかはわかりません。あなたのサンプルコードは動作します:https://play.golang.org/p/zbybX0tnRB – JimB
@ nik-kunkelサンプルコードはうまくいきます。https://play.golang.org/p/743MBHL3Y4をご覧ください。私の最高のガスはあなたの体が正しくないということです。おそらくあなたが身体から読んでいるのはそのデータではありません。 – sadlil
@JimBとNikが正しい場合は、取得しているボディをstdout/fileに書き出し、配列のすべての要素がデコードしようとしている型と一貫性があるかどうかを確認してください。 –