Konteks:
JSON marshaling dalam Go membolehkan penukaran struct menjadi objek JSON. Secara lalai, semua medan struct yang dieksport disertakan dalam output JSON. Walau bagaimanapun, medan kosong boleh ditinggalkan dengan menyatakan :",omitempty" sebagai teg medan.
Masalah:
Jika struct bersarang kosong (iaitu, mempunyai sifar nilai untuk semua medannya), ia mungkin masih muncul dalam output JSON walaupun ia mempunyai :",omitempty" tag.
Penyelesaian:
Untuk menghilangkan struct bersarang kosong, adalah perlu untuk menggunakan penunjuk kepada struct. Dengan berbuat demikian, nilai kosong struct bersarang akan dianggap sebagai penunjuk sifar.
Penjelasan:
Dari dokumentasi Go:
Oleh itu, dengan menggunakan penuding ke struct bersarang, kami memastikan ia dipertimbangkan nilai kosong dan dengan itu diabaikan daripada output JSON apabila teg :",omitempty" ialah digunakan.
Contoh:
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A *ColorGroup `json:",omitempty"` B string `json:",omitempty"` } // Empty nested struct (zero values) group := Total{ B: "abc", } // Marshal group without nested struct (only "B" field included) b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stderr.Write(b)
Atas ialah kandungan terperinci Bagaimana untuk Mengetepikan Struktur Bersarang Kosong dalam JSON Marshaling Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!