如何在 golang 中编写具有嵌套递归数据的结构
How to write a struct with nested recursive data in golang
我有如下数据
{
"cars": {
"toyota": [
"sedan",
"pickup"
],
"honda": [
"sedan",
"couple",
"pickup"
]
....
}
}
该列表可能会继续增长。我试图找到一个合适的结构来服务器数据和 return 到一个 http responsewriter。
我拥有的结构。
type Autos struct {
Cars struct {
Toyota []string `json:"toyota"`
Honda []string `json:"honda"`
} `json:"cars"`
}
但是上面的结构已经预定义了"Toyota""Honda"
我正在寻找一种只使用一个或两个结构来表示数据结构的方法。提前致谢。
你可以这样做:
type Autos struct {
Cars map[string][]string `json:"cars"`
}
这是一个完整的工作示例,打印 "coupe":
package main
import (
"encoding/json"
)
type Autos struct {
Cars map[string][]string `json:"cars"`
}
func main() {
x := `{
"cars": {
"toyota": [
"sedan",
"pickup"
],
"honda": [
"sedan",
"coupe",
"pickup"
]
}
}`
var a Autos
err := json.Unmarshal([]byte(x), &a)
if err != nil {
panic(err)
}
println(a.Cars["honda"][1])
}
我有如下数据
{
"cars": {
"toyota": [
"sedan",
"pickup"
],
"honda": [
"sedan",
"couple",
"pickup"
]
....
}
}
该列表可能会继续增长。我试图找到一个合适的结构来服务器数据和 return 到一个 http responsewriter。
我拥有的结构。
type Autos struct {
Cars struct {
Toyota []string `json:"toyota"`
Honda []string `json:"honda"`
} `json:"cars"`
}
但是上面的结构已经预定义了"Toyota""Honda"
我正在寻找一种只使用一个或两个结构来表示数据结构的方法。提前致谢。
你可以这样做:
type Autos struct {
Cars map[string][]string `json:"cars"`
}
这是一个完整的工作示例,打印 "coupe":
package main
import (
"encoding/json"
)
type Autos struct {
Cars map[string][]string `json:"cars"`
}
func main() {
x := `{
"cars": {
"toyota": [
"sedan",
"pickup"
],
"honda": [
"sedan",
"coupe",
"pickup"
]
}
}`
var a Autos
err := json.Unmarshal([]byte(x), &a)
if err != nil {
panic(err)
}
println(a.Cars["honda"][1])
}