我有一个来自图形数据库的JSON,它仅返回列表。这是查询和响应的示例:
{
Course(func: eq(XID, "1")) {
Name
Holes : Hole {
Number
Tee {
Color
Basket @facets(distance) {
Designation
}
}
}
}
}
此查询按ID查找,因此它只能返回一个结果,但是数据库后端的性质意味着它将始终返回如下列表:
{
"Course": [
{
"Name": "NAD",
"Holes": [
{
"Number": 1,
"Tee": [
{
"Color": "Blue",
"Basket": [
{
"Designation": "A",
"Basket|distance": "70"
}
]
},
{
"Color": "Red",
"Basket": [
{
"Designation": "A",
"Basket|distance": "69"
}
]
}
]
},
{
"Number": 2,
"Tee": [
{
"Color": "Blue",
"Basket": [
{
"Designation": "A",
"Basket|distance": "79"
},
{
"Designation": "B",
"Basket|distance": "89"
}
]
},
{
"Color": "Red",
"Basket": [
{
"Designation": "A",
"Basket|distance": "79"
},
{
"Designation": "B",
"Basket|distance": "95"
}
]
}
]
}
]
}
]
}
我想将单个课程解组为结构:
type Course struct {
Name string `json:"Name"`
Holes []struct {
Number int `json:"Number"`
Tee []struct {
Color string `json:"Color"`
Basket []struct {
Designation string `json:"Designation"`
BasketDistance string `json:"Basket|distance"`
} `json:"Basket"`
} `json:"Tee"`
} `json:"Holes"`
}
我尝试制作一个临时结构,该结构只是一门课程的列表,以按索引提取正确的JSON,但是我遇到了一个非常普遍的运行时错误,即无法将对象解编为该类型。
我认为通过指定JSONRawMessage类型将其转换为[]map[string]interface{}
然后从那里解组为Course相对容易,但这不会带来性能损失吗?解决此问题的最有效方法是什么?