gpt4 book ai didi

json - Golang 使用动态相关键使用 json

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:38 26 4
gpt4 key购买 nike

我是 GO 的新手,我正在尝试使用 GO 使用来自各种 API 的 json 数据,并将它们放在结构的其中一个中 像这样格式化数据

{"MS": {
"last":"25",
"highestBid":"20"},
"GE": {
"last": "24",
"highestBid": "22"}
}

虽然我可以找到有关使用动态键使用的信息,但我发现的所有示例都将最外层键视为任意且无关紧要。我需要将它用作键值对,如下所示:

{"MarketName": "GE", "last":"24","higestBid":"22"}

我了解使用接口(interface)映射,但我无法弄清楚如何将动态键映射到结构作为键:值对,如上所示。我的代码示例可以在 Playground 找到省略需要的键的 map 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 的新手,如果能得到尽可能多的帮助和解释,我将不胜感激

最佳答案

你已经完成了一半,你只需要解码到你的结构中,然后稍微修改一下数据:

type Market struct {
Name string
Last string
HighestBid string
}

func main() {
// Unmarshal using a generic interface
var f map[string]Market
err := json.Unmarshal(jsonBytes, &f)
if err != nil {
fmt.Println("Error parsing JSON: ", err)
return
}
markets := make([]Market, 0, len(f))
for k,v := range f {
v.Name = k
markets = append(markets,v)
}
fmt.Println(markets)
}

这里的工作示例:https://play.golang.org/p/iagx8RWFfx_k

关于json - Golang 使用动态相关键使用 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48411657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com