Memandangkan struct Golang dengan medan sql.NullString, tingkah laku marshaling lalai menghasilkan output di mana medan bersarang di dalam objek JSON dengan kekunci String dan Sah. Untuk mencapai output diratakan yang mengandungi hanya nilai NullString, ikuti langkah berikut:
1. Tentukan Jenis Tersuai:
Buat jenis tersuai yang membenamkan sql.NullString dan melaksanakan antara muka json.Marshaler.
type MyNullString struct { sql.NullString }
2. Laksanakan Kaedah MarshalJSON:
Di dalam MyNullString, laksanakan kaedah MarshalJSON untuk menyediakan tingkah laku marshalling JSON tersuai.
func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil }
3. Ubah suai Struct:
Gunakan jenis MyNullString tersuai untuk medan dalam struct yang memerlukan perataan.
type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
Contoh:
package main import ( "database/sql" "encoding/json" "log" ) 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"` } func main() { company := Company{ ID: 68, Abn: MyNullString{String: "SomeABN", Valid: true}, } result, err := json.Marshal(company) if err != nil { log.Fatal(err) } // Output: {"id":68,"abn":"SomeABN"} log.Println(string(result)) }
Dengan mengikuti langkah-langkah ini, anda boleh meratakan output sql.NullString dengan berkesan medan dan dapatkan hanya nilai dalam JSON marshall anda.
Atas ialah kandungan terperinci Bagaimana untuk Meratakan Output sql.NullString Marshalled dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!