我想在Go中使用json.Unmarshal
解析此json。
{
"quotes": [
{
"high": "1.9981",
"open": "1.9981",
"bid": "1.9981",
"currencyPairCode": "GBPNZD",
"ask": "2.0043",
"low": "1.9981"
},
{
"high": "81.79",
"open": "81.79",
"bid": "81.79",
"currencyPairCode": "CADJPY",
"ask": "82.03",
"low": "81.79"
}
]
}
source返回有关解析结果的{[]}
。
type GaitameOnlineResponse struct {
quotes []Quote
}
type Quote struct {
high string
open string
bid string
currencyPairCode string
ask string
low string
}
func sampleParse() {
path := os.Getenv("PWD")
bytes, err := ioutil.ReadFile(path + "/rate.json")
if err != nil {
log.Fatal(err)
}
var r GaitameOnlineResponse
if err := json.Unmarshal(bytes, &r); err != nil {
log.Fatal(err)
}
fmt.Println(r)
// {[]}
}
我不知道结果的原因。
答案 0 :(得分:1)
编辑:正如@mkopriva指出,例如,如果未导出字段(例如,以大写字母开头),JSON将不会解组到该结构中。
type GaitameOnlineResponse struct {
Quotes []Quote `json:"quotes"`
}
type Quote struct {
High string `json:"high"`
Open string `json:"open"`
Bid string `json:"bid"`
CurrencyPairCode string `json:"currencyPairCode"` // add tags to match the exact JSON field names
Ask string `json:"ask"`
Low string `json:"low"`
}
有很多在线JSON验证器,例如https://jsonlint.com/
将JSON粘贴会显示错误:
Error: Parse error on line 17:
..."low": "81.79"
在第18行添加]
以完成数组将修复您的JSON,例如
"low": "81.79"
}
]
}
答案 1 :(得分:1)
我必须出口。
type GaitameOnlineResponse struct {
Quotes []Quote
}
type Quote struct {
High string
Open string
Bid string
CurrencyPairCode string
Ask string
Low string
}
我解决了。