为了账号安全,请及时绑定邮箱和手机立即绑定

如果嵌套内容使用动态键,如何在 GoLang 中解析 JSON?

如果嵌套内容使用动态键,如何在 GoLang 中解析 JSON?

Go
MM们 2021-11-08 18:54:05
如果您将符号(由用户提供)作为字符串数组参数(例如:“ symbols”,being string["\"AAPL\"", "\"FB\"", "\"GOOG\""]),则可以使用strings/#Join生成正确的字符串:s := strings.Joins(symbols, ",")然后(如“编码/解码 URL ”中所述),用于net/url/#QueryEscape获取符号的最终 url 字符串:url := "http://query.yahooapis.com/v1/public/yql?q=select%20LastTradePriceOnly%20from%20yahoo.finance.quote%20where%20symbol%20in%20(" + url.QueryEscape(s) + ")&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

试试这个,看起来你的结构设置不正确:


http://play.golang.org/p/VRKbv-GVQB


您需要解析整个 json 字符串,它是一个包含名为 的单个元素的对象items。items然后包含string->Person对象的映射。


如果您只想从每个人中提取name和age,您可以通过抓取data.Items["bvu62fu6dq"].Name.


如果您想在 中使用动态键Person,则需要执行map[string]interface{}而不是Person再次捕获动态键。它看起来像:


type Data struct {

    Items map[string]map[string]interface{} `json:"items"`

}

...

fmt.Printf("%v\n", data.Items["bvu62fu6dq"]["name"]

fmt.Printf("%v\n", data.Items["bvu62fu6dq"]["age"]

fmt.Printf("%v\n", data.Items["bvu62fu6dq"]["xyz"]


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信