Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meratakan Output sql.NullString Apabila Marshaling JSON dalam Go?
Meratakan sql.NullString Output Semasa JSON Marshaling
Apabila menyusun struct Go yang mengandungi medan sql.NullString, output lalai termasuk medan Sifat sah dan String. Untuk mencapai output diratakan yang hanya merangkumi nilai, anda mesti mengambil langkah tambahan.
Pertimbangkan struct berikut:
type Company struct { ID int `json:"id"` Abn sql.NullString `json:"abn,string"` }
Marshalling struct ini dengan json.Marshal menghasilkan output yang kelihatan seperti :
{ "id": "68", "abn": { "String": "SomeABN", "Valid": true } }
Lanjutkan sql.NullString untuk JSON Tersuai Marshaling
Untuk meratakan output ini, anda mesti melanjutkan sql.NullString dan melaksanakan json.Marshaler.
type NullString sql.NullString func (x *NullString) MarshalJSON() ([]byte, error) { if !x.Valid { x.Valid = true x.String = "" //return []byte("null"), nil } return json.Marshal(x.String) }
Tentukan Jenis Tersuai untuk Output Diratakan
Seterusnya, tentukan jenis tersuai yang membenamkan NullString dan melaksanakan json.Marshaler.
type MyNullString struct { NullString } func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil } type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
Dengan menggunakan jenis tersuai ini, output tersusun menjadi:
{ "id": "68", "abn": "SomeABN" }
Atas ialah kandungan terperinci Bagaimana untuk Meratakan Output sql.NullString Apabila Marshaling JSON dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!