我有具有以下架构的 mongo 数据库{ "_id" : ObjectId("55c8526d8c16598efb5ee1e6"), "guid" : "72811d52b48379e72c8fdd11aa09cb8b", "blkid" : 1, "vblkid" : 0, "spltid" : 0, "cmpr" : false, "encr" : false, "chksum" : "", "dup" : false, "cid" : 1, "off" : 524508, "len" : 524408, "incr" : 0, "fBackupID" : 0, "vid" : 0, "plugInType" : 0, "blkType" : 0, "alen" : 0 }我正在尝试将这些解析为具有以下结构的结构:type VhfsBlockMD struct { GUID string `json:"guid"` BlkID int `bson:",minsize" json:"blkid"` VBlkID int `bson:",minsize" json:"vblkid"` SpltID int `bson:",minsize" json:"spltid"` Cmpr bool `json:"cmpr" ` Encr bool `json:"encr"` Blksum string `bson:"blksum,omitempty" json:"blksum,omitempty"` Chksum string `json:"chksum"` Dup bool `json:"dup"` Cid int `bson:",minsize" json:"cid"` SplitLen int `bson:",minsize" json:"len"` Off int64 `bson:",minsize" json:"off"` Incr int `bson:",minsize" json:"incr"` CDup bool `bson:"cdup,omitempty" json:"cdup,omitempty"` FBackupID int `bson:"fBackupID" json:"fBackupID"` Vid int `bson:"vid" json:"vid"` PlugInType int `bson:"plugInType" json:"plugInType"` BlkType int `bson:"blkType" json:"blkType"` Alen int `bson:"alen" json:"alen"` IsValid int `bson:"-" json:"-"` Len uint64 `bson:"-" json:"-"`}我正在使用 mgo 驱动程序。现在的问题是,在仅解析属性后,我无法正确解析为“len”(go 结构中的 SplitLen)。len 定义为SplitLen int `bson:",minsize" json:"len"`我相信这与标签有关。另外我想提到的是,使用相同的结构将值插入到 mongodb 中。任何帮助,将不胜感激。
2 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
如果数据元素在其他表示形式(例如 json 文本或数据库)中出现在与结构字段名称不同的名称下,则必须告诉字段标记中的结构字段要匹配哪个名称。
你告诉json
包来获取/设置JSON值"len"
到现场SplitLen
这是由包括本在其标签不同的名称:json:"len"
。
但是您还没有告诉 mongo 驱动程序也使用这个字段,它很可能在您的 mongodb 中命名"Len"
(或"len"
)。您明确排除了可以按名称“自动匹配”的字段:
Len uint64 `bson:"-" json:"-"`
正如 Ainar-G 建议的那样,您可以通过将"len"
加到bson
标签值来指定该字段,这将强制 mgo 驱动程序也使用该SplitLen
字段:
SplitLen int `bson:"len,minsize" json:"len"`
现在我看不到该Len
字段的任何用途,您应该将其删除以避免混淆,或者使用Len
名称而不是SplitLen
:
Len int `bson:"len,minsize" json:"len"`
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
将字段名称也添加到 BSON 标签中:
SplitLen int `bson:"len,minsize" json:"len"
不然好像会和Len
被忽略的字段冲突。
- 2 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消