[英]golang recursive json to struct?
以前写python,刚开始接触golang
比如我的json,小朋友不知道数字,可能是三,可能是十。
[{
"id": 1,
"name": "aaa",
"children": [{
"id": 2,
"name": "bbb",
"children": [{
"id": 3,
"name": "ccc",
"children": [{
"id": 4,
"name": "ddd",
"children": []
}]
}]
}]
}]
我写结构
type AutoGenerated []struct {
ID int `json:"id"`
Name string `json:"name"`
Children []struct {
ID int `json:"id"`
Name string `json:"name"`
Children []struct {
ID int `json:"id"`
Name string `json:"name"`
Children []struct {
ID int `json:"id"`
Name string `json:"name"`
Children []interface{} `json:"children"`
} `json:"children"`
} `json:"children"`
} `json:"children"`
}
但我觉得这太愚蠢了。如何优化?
您可以在其定义中重用AutoGenerated
类型:
type AutoGenerated []struct {
ID int `json:"id"`
Name string `json:"name"`
Children AutoGenerated `json:"children"`
}
测试它:
var o AutoGenerated
if err := json.Unmarshal([]byte(src), &o); err != nil {
panic(err)
}
fmt.Println(o)
( src
是您的 JSON 输入字符串。)
Output(在Go 游乐场试试):
[{1 aaa [{2 bbb [{3 ccc [{4 ddd []}]}]}]}]
如果AutoGenerated
本身不是切片,也更容易理解和使用:
type AutoGenerated struct {
ID int `json:"id"`
Name string `json:"name"`
Children []AutoGenerated `json:"children"`
}
然后使用它/测试它:
var o []AutoGenerated
if err := json.Unmarshal([]byte(src), &o); err != nil {
panic(err)
}
fmt.Println(o)
输出相同。 在Go 游乐场试试这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.