【发布时间】:2018-07-02 20:37:39
【问题描述】:
我是 GO 新手,我正在尝试使用 GO 使用来自各种 API 的 json 数据,并将它们放在 struct 的其中之一中 像这样格式化数据
{"MS": {
"last":"25",
"highestBid":"20"},
"GE": {
"last": "24",
"highestBid": "22"}
}
虽然我可以找到有关使用动态键消费的信息,但我发现的所有示例都将最外层的键视为任意且不相关的。我需要将其用作键值对,如下所示:
{"MarketName": "GE", "last":"24","higestBid":"22"}
我了解使用接口映射,但我不知道如何将动态键映射到结构作为键:值对,如上。我的代码示例可以在 play ground Relevant Code 中找到省略需要键的映射
package main
import (
"encoding/json"
"fmt"
)
var jsonBytes = []byte(`
{"MS": {
"last":"25",
"highestBid":"20"},
"GE": {
"last": "24",
"highestBid": "22"}
}`)
type Market struct {
Last string
HighestBid string
}
func main() {
// Unmarshal using a generic interface
var f interface{}
err := json.Unmarshal(jsonBytes, &f)
if err != nil {
fmt.Println("Error parsing JSON: ", err)
}
fmt.Println(f)
}
就这样输出
map[MS:map[last:25 highestBid:20] GE:map[highestBid:22 last:24]]
正如我所说,我是 GO 新手,如果我能得到尽可能多的帮助和解释,我将不胜感激
【问题讨论】:
标签: json go dynamic unmarshalling