Saya pernah menulis ular sawa sebelum ini, tetapi saya baru mula berhubung dengan golang
Ambil json saya sebagai contoh Kanak-kanak itu tidak tahu nombornya.
[{ "id": 1, "name": "aaa", "children": [{ "id": 2, "name": "bbb", "children": [{ "id": 3, "name": "ccc", "children": [{ "id": 4, "name": "ddd", "children": [] }] }] }] }]
Saya menulis struktur
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"` }
Tetapi saya rasa ini sangat bodoh. Bagaimana untuk mengoptimumkan?
Anda boleh menggunakannya semula dalam definisinya autogenerate
Jenis:
type autogenerated []struct { id int `json:"id"` name string `json:"name"` children autogenerated `json:"children"` }
Uji:
var o autogenerated if err := json.unmarshal([]byte(src), &o); err != nil { panic(err) } fmt.println(o)
(src
ialah rentetan input json anda.)
Output (cuba di pergi taman permainan):
[{1 aaa [{2 bbb [{3 ccc [{4 ddd []}]}]}]}]
Lebih mudah difahami dan digunakan jika autogenerate
bukan kepingan itu sendiri:
type autogenerated struct { id int `json:"id"` name string `json:"name"` children []autogenerated `json:"children"` }
Kemudian gunakannya/ujinya:
var o []AutoGenerated if err := json.Unmarshal([]byte(src), &o); err != nil { panic(err) } fmt.Println(o)
Keluaran adalah sama. Cuba ini di pergi taman permainan.
Atas ialah kandungan terperinci golang rekursif json ke struct?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!