Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencapai Custom BSON Marshaling dalam Go, Sama seperti Custom JSON Marshaling?
Marshaling BSON Tersuai: Setara untuk Marshaling JSON Tersuai
Untuk mencapai marshaling BSON tersuai, serupa dengan marshaling JSON tersuai yang ditunjukkan dengan struct Mata Wang , anda boleh menggunakan antara muka bson.Getter dan bson.Setter. Antara muka ini membenarkan penyesuaian cara nilai dikodkan dan dinyahkod dalam format BSON.
Melaksanakan Pengambil dan Penetap BSON Tersuai
Struktur Mata Wang boleh dikemas kini untuk melaksanakan bson.Getter dan bson.Setter antara muka sebagai berikut:
// Currency struct implements bson.Getter and bson.Setter type Currency struct { value decimal.Decimal currencyCode string } // GetBSON implements bson.Getter. func (c Currency) GetBSON() (interface{}, error) { value := c.Value().Float64() return struct { Value float64 `json:"value" bson:"value"` CurrencyCode string `json:"currencyCode" bson:"currencyCode"` }{ Value: value, CurrencyCode: c.CurrencyCode(), }, nil } // SetBSON implements bson.Setter. func (c *Currency) SetBSON(raw bson.Raw) error { decoded := new(struct { Value float64 `json:"value" bson:"value"` CurrencyCode string `json:"currencyCode" bson:"currencyCode"` }) bsonErr := raw.Unmarshal(decoded) if bsonErr != nil { return bsonErr } c.value = decimal.NewFromFloat(decoded.Value) c.currencyCode = decoded.CurrencyCode return nil }
Menggunakan Custom BSON Marshaling dalam Induk Structs
Setelah struct Mata Wang dikemas kini, serupa dengan custom JSON marshaling, struct Produk yang membenamkan Medan mata wang secara automatik akan menggunakan marshaling tersuai apabila memanggil mgo.Marshal atau bson.Encode. Output BSON akan mengandungi nama medan dan nilai data yang dikehendaki tanpa memerlukan struct berasingan dengan medan yang dieksport.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Custom BSON Marshaling dalam Go, Sama seperti Custom JSON Marshaling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!