早些時候我發(fā)布了這個問題,詢問有關(guān)使用 mgo 在 Go 中編寫自定義 BSON 編組/解組的問題?,F(xiàn)在我來測試它,我想我遇到了一個更大的問題。我所有的結(jié)構(gòu)都解組為 nil 值。這是我的貨幣結(jié)構(gòu)與 bson.Getter 和 bson.Setter 的實現(xiàn):type Currency struct { value decimal.Decimal //The actual value of the currency. currencyCode string //The ISO currency code.}/*GetBSON implements bson.Getter.*/func (c Currency) GetBSON() (interface{}, error) { f, _ := c.Value().Float64() return bson.Marshal(struct { Value float64 `json:"value" bson:"value"` CurrencyCode string `json:"currencyCode" bson:"currencyCode"` }{ Value: f, CurrencyCode: c.currencyCode, })}/*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"` }) fmt.Println(string(raw.Data)) bsonErr := raw.Unmarshal(decoded) if bsonErr == nil { fmt.Println("Debug: no error returned.") fmt.Println(decoded) c.value = decimal.NewFromFloat(decoded.Value) c.currencyCode = decoded.CurrencyCode return nil } else { return bsonErr }}通過查看原始數(shù)據(jù),它可以正確編組,但是在解組時,結(jié)果結(jié)構(gòu)只是空的。我在這里出錯的任何想法?我go get gopkg.in/mgo.v2昨天確實使用了這個命令,所以我希望它是最新的,并且像這樣的錯誤不會出現(xiàn)在“最熱門的 MongoDB 驅(qū)動程序”中。
1 回答

蝴蝶刀刀
TA貢獻1801條經(jīng)驗 獲得超8個贊
該GetBSON方法應(yīng)返回的值來編組,而不是從編組由此產(chǎn)生的二進制數(shù)據(jù)。這就是為什么它的第一個結(jié)果類型是interface{}
而不是[]byte
。
- 1 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報
0/150
提交
取消