3 回答

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
您看到的原因是因?yàn)槟褂胕nterface{}的元素類(lèi)型為Content:
Content []interface{}
如果使用interface{},它基本上不攜帶類(lèi)型信息,驅(qū)動(dòng)程序在對(duì)數(shù)組元素進(jìn)行 umarshaling 時(shí)應(yīng)該使用什么類(lèi)型,因此驅(qū)動(dòng)程序?qū)⑦x擇/使用bson.D來(lái)表示content字段的文檔。bson.D是一個(gè)切片,其中包含文檔的有序字段列表,這就是為什么您會(huì)看到“數(shù)組的數(shù)組”。每個(gè)bson.D都是一個(gè)切片,代表一個(gè)文檔。
type D []E
type E struct {
Key string
Value interface{}
}
如果您可以使用結(jié)構(gòu)對(duì)數(shù)組元素建模,請(qǐng)使用它,例如:
type Foo struct {
Bar string
Baz int
}
Content []Foo `json:"content" bson:"content,omitempty"`
// Or a pointer to Foo:
Content []*Foo `json:"content" bson:"content,omitempty"`
如果您沒(méi)有數(shù)組元素的固定模型,或者您可以使用bson.Mwhich is a map(但是字段/屬性將是無(wú)序的,這可能是也可能不是問(wèn)題):
type M map[string]interface{}
使用它:
Content []bson.M `json:"content" bson:"content,omitempty"`

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
只有 []bson.M 如果它是一個(gè)數(shù)組...我不得不使用 bson.M 而不是因?yàn)槲业臄?shù)據(jù)結(jié)構(gòu)。
- 3 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)