JSON Null vs. Missing Fields in Go: A Comparison
Apabila bekerja dengan data JSON dalam Go, adalah penting untuk membezakan antara medan yang ditetapkan secara eksplisit kepada null dan medan yang tiada daripada input JSON. Pembezaan ini menjadi perlu apabila data JSON mewakili struct Golang.
Kedua-dua medan nol dan tiada menghasilkan nilai nol dalam medan struct Go yang sepadan. Walau bagaimanapun, membezakan antara dua senario boleh menjadi kritikal untuk menentukan sama ada medan sengaja ditetapkan kepada nol atau tidak disertakan dalam data JSON.
Untuk menangani cabaran ini, dua pendekatan tersedia:
Menggunakan Struktur Pilihan dengan Generik (Go 1.18 )
Go 1.18 memperkenalkan generik, membolehkan penciptaan struct Pilihan generik untuk mengendalikan situasi ini. Struktur Pilihan menampilkan medan boolean Ditakrifkan yang menunjukkan kehadiran nilai dalam input JSON dan penunjuk Nilai kepada nilai sebenar.
type Optional[T any] struct { Defined bool Value *T }
type Payload struct { Field1 Optional[string] `json:"field1"` Field2 Optional[bool] `json:"field2"` Field3 Optional[int32] `json:"field3"` }
Menggunakan Struktur Pilihan Tersuai (Pra-Generik )
Sebelum generik, struct Pilihan* tersuai boleh dibuat untuk setiap jenis data yang perlu dikendalikan sebagai pilihan.
type OptionalString struct { Defined bool Value *string }
type Payload struct { SomeField1 string `json:"somefield1"` SomeField2 OptionalString `json:"somefield2"` }
Dengan menggunakan teknik ini, pembangun boleh dengan mudah membezakan sama ada medan JSON telah ditetapkan secara eksplisit kepada null atau tiada dalam data input, memberikan yang lebih besar fleksibiliti dan kawalan ke atas pengesahan dan pemprosesan data.
Atas ialah kandungan terperinci Bagaimana Membezakan Antara JSON Null dan Medan Hilang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!