我一直在努力解析一个基本的数组响应。
我的输入JSON,有一个一致类型的结构列表。
[
{
"amount":"6.40000000",
"date":"1439165701",
"price":"350.26",
"tid":104159
},
{
"amount":"0.10025000",
"date":"1439162764",
"price":"351.03",
"tid":104150
}
]
我的struct有一个嵌套的数组结构。
type TransactionResponse struct {
Transaction []Transaction
}
type Transaction struct {
Amount string `json:"amount"`
Date string `json:"date"`
Price string `json:"price"`
tid uint `json:"tid"`
}
解析json的函数:
func main() {
var transactions TransactionResponse
body, err := http.Get(url)
err = json.Unmarshal(body, &transactions)
}
我哪里错了?
答案 0 :(得分:2)
解码为一片交易:
body, err := http.Get(url)
var transactions []Transaction
err = json.Unmarshal(body, &transactions)
此外,导出所有字段:
type Transaction struct {
Amount string `json:"amount"`
Date string `json:"date"`
Price string `json:"price"`
Tid uint `json:"tid"`
}
答案 1 :(得分:0)
所以是的,花了一段时间......
TransactionResponse不是结构类型。如果我使它成为一个Transaction数组,它就可以正常工作。
package main
import "fmt"
import "encoding/json"
var body = `[
{
"amount":"6.40000000",
"date":"1439165701",
"price":"350.26",
"tid":104159
},
{
"amount":"0.10025000",
"date":"1439162764",
"price":"351.03",
"tid":104150
}
]
`
type TransactionResponse []Transaction
type Transaction struct {
Amount string `json:"amount"`
Date string `json:"date"`
Price string `json:"price"`
tid uint `json:"tid"`
}
func main() {
var transactions TransactionResponse
err := json.Unmarshal([]byte(body), &transactions)
if err != nil {
panic(err)
}
fmt.Println(transactions)
}