问题内容 以前写过python,刚开始接触golang 以我的JSON为例,孩子不认识数字,可能是三,可能是十。 [{ "id": 1, "name": "aaa",
以我的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"`
}
但我觉得这太愚蠢了。 如何优化?
您可以在其定义中重用 autogenerate
类型:
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 输入字符串。)
输出(在 Go playground 上尝试):
[{1 aaa [{2 bbb [{3 ccc [{4 ddd []}]}]}]}]
如果 autogenerate
本身不是切片,则更容易理解和使用:
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 playground 上尝试一下这个。
--结束END--
本文标题: golang递归json到结构?
本文链接: https://lsjlt.com/news/561216.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0