我是 Go 的新手,正在尝试通过向 Unmarshal 提供结构来解码 json blob。问题是,我不知道某些键。我可以解析以下内容
{"age":21,"Travel":{"fast":"yes","sick":false} }
像这样
type user struct {
Age int
Travel TravelType
}
type TravelType struct {
Fast string
Sick bool
}
func main() {
src_json := []byte(`{"age":21,"travel":{"fast":"yes","sick":false}}`)
u := user{}
err := json.Unmarshal(src_json, &u)
if err != nil {
panic(err)
}
fmt.Printf("%v", u)
}
获取{21 {yes false}}
但是,我不知道我会如何处理这样的事情-
{
"age":21,
"Travel":
{
"canada":
{"fast":"yes","sick":false},
"bermuda":
{"fast":"yes","sick":false},
"another unknown key name":
{"fast":"yes","sick":false},
}
}
没有在结构中明确声明“加拿大”、“百慕大”等。我如何使用 Unmarshal 来解析上面的 json?我找到了这个 answer , 但不知道它是如何实现的
最佳答案
您可以解码为 map[string]TravelType
。将您的 user
结构更改为此,您应该可以开始了:
type user struct {
Age int
Travel map[string]TravelType
}
这是 Go Playground 上的有效概念验证:http://play.golang.org/p/-4k9GE5ZlS
关于json - 在没有所有键名的情况下在 Go 中解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819173/