如果结构体是一个包含一个字典的列表,可以使用以下方式将其转化为 Go 语言中的结构体:
type Node struct {
Identity int64 `json:"identity"`
Labels []string `json:"labels"`
Properties map[string]string `json:"properties"`
}
type Data struct {
N []Node `json:"n"`
}
var jsonData = `
[
{
"n": {
"identity": 961,
"labels": [
"ApiPermission"
],
"properties": {
"Api": "PUT/v1/server/:id/remark",
"Remark": "系统自动生成接口",
"Name": "备注服务器"
}
}
}
]
`
func main() {
var data Data
err := json.Unmarshal([]byte(jsonData), &data)
if err != nil {
panic(err)
}
fmt.Println(data.N[0].Identity) // 输出: 961
}
在这个例子中,我们定义了两个结构体:Node 和 Data。其中,Node 结构体表示 JSON 中包含的节点信息,而 Data 结构体则是一个包含了多个节点信息的列表。
通过调用 json.Unmarshal() 函数将 JSON 数据解析到 Go 语言中的结构体变量中。在本例中,我们只关心列表中第一个元素包含的节点信息,因此将其解析到 Data.N[0] 变量中。
最后输出 Data.N[0].Identity 的值为 961,证明我们成功地将 JSON 数据转换成了 Go 语言中的结构体。




