Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengetepikan Struktur Bersarang Kosong dalam JSON Marshaling Go?

Bagaimana untuk Mengetepikan Struktur Bersarang Kosong dalam JSON Marshaling Go?

Susan Sarandon
Lepaskan: 2024-12-13 22:21:16
asal
271 orang telah melayarinya

How to Omit Empty Nested Structs in Go's JSON Marshaling?

Mengabaikan Stuct Bersarang Kosong dalam JSON Marshaling

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:

  • Kod nilai struktur sebagai objek JSON. Nilai kosong termasuk penunjuk nil.
  • Teg omitempty digunakan pada nilai kosong, termasuk penunjuk nil.

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan