J'ai déjà écrit Python, mais je viens juste de commencer à entrer en contact avec Golang
Prenons mon json comme exemple. L'enfant ne connaît pas le numéro. Il peut être trois ou dix.
[{ "id": 1, "name": "aaa", "children": [{ "id": 2, "name": "bbb", "children": [{ "id": 3, "name": "ccc", "children": [{ "id": 4, "name": "ddd", "children": [] }] }] }] }]
J'écris la structure
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"` }
Mais je pense que c'est tellement stupide. Comment optimiser ?
Vous pouvez la réutiliser dans sa définition autogenerate
Tapez :
type autogenerated []struct { id int `json:"id"` name string `json:"name"` children autogenerated `json:"children"` }
Testez-le :
var o autogenerated if err := json.unmarshal([]byte(src), &o); err != nil { panic(err) } fmt.println(o)
(src
est votre chaîne d'entrée json.)
Sortie (essayez-le sur go terrain de jeu) :
[{1 aaa [{2 bbb [{3 ccc [{4 ddd []}]}]}]}]
C'est plus facile à comprendre et à utiliser si autogenerate
n'est pas une tranche en soi :
type autogenerated struct { id int `json:"id"` name string `json:"name"` children []autogenerated `json:"children"` }
Alors utilisez-le/testez-le :
var o []AutoGenerated if err := json.Unmarshal([]byte(src), &o); err != nil { panic(err) } fmt.Println(o)
Le résultat est le même. Essayez ceci sur le go terrain de jeu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!