Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Meratakan Output JSON daripada struct Go yang mengandungi sql.NullString?
Memandangkan struct Go yang mengandungi sql.NullString, menyusun struct menggunakan pengekodan/json produces objek bersarang bukannya diratakan yang dikehendaki nilai.
type Company struct { ID int `json:"id"` Abn sql.NullString `json:"abn,string"` }
Sebagai contoh, menyusun struktur sedemikian menghasilkan output seperti:
{ "id": "68", "abn": { "String": "SomeABN", "Valid": true } }
Walau bagaimanapun, output yang dikehendaki diratakan:
{ "id": "68", "abn": "SomeABN" }
Menyesuaikan kaedah MarshalJSON untuk jenis NullString dengan menentukan jenis baharu membolehkan untuk output yang lebih terkawal.
type MyNullString struct { sql.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 melaksanakan antara muka json.Marshaler, jenis MyNullString boleh mengawal cara ia diwakili sebagai JSON. Apabila ia bukan nol, ia mengembalikan rentetan asas dan untuk nilai nol, ia mengembalikan rentetan "null" literal.
Contoh yang disediakan dalam taman permainan kod menunjukkan gelagat yang diingini:
https://play.golang.org/p/Ak_D6QgIzLb
Penyelesaian ini meratakan output dengan mengabaikan medan Sah dan mengembalikan nilai rentetan secara langsung.
Atas ialah kandungan terperinci Bagaimana untuk Meratakan Output JSON daripada struct Go yang mengandungi sql.NullString?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!