我知道标题说接口数组,但这就是打印数据的方式。我在 mongodb 中有一个名为“设备”的字段,它是对象类型。该对象包含一堆随机键值对。键只是随机生成的整数,值是字符串。所以我写了一些从数据库中检索数据的代码,在我检索到数据之后,我想从这些对象中获取所有键并将它们存储在一个数组中,我似乎不知道该怎么做那。首先,我假设我的问题在于获取数据的方式,因为我将其存储到 interface{} 而不是数组中。数据像数组一样打印出来,但是当我更改结构以检索数组时,它返回为空,所以我放弃了这个想法。功能 type Data struct { Devices interface{} `json:"devices" bson:"devices"` } client := db.ConnectClient() col := client.Database("Users").Collection("User") var deviceIds Data _ = col.FindOne(context.TODO(), bson.D{}).Decode(&deviceIds) log.Print(deviceIds.Devices)输出2020/10/29 21:28:07 [{123456789 Plant} {456753121 Money Bringer} {798745321 Hello}]我也尝试过将该结构更改为 type Data struct { Devices map[int]interface{} `json:"devices" bson:"devices"` }这给出了一个输出2020/10/29 21:35:10 map[123456789:Plant 456753121:Money Bringer 798745321:Hello]但我又不知道如何从中提取密钥
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
所以当我刚写完这个问题时,我发现地图是获取数据的正确方法。
发布问题并自己回答,因为我认为这对其他人有用
type Data struct {
Devices map[int]interface{} `json:"devices" bson:"devices"`
}
for key, value := range deviceIds.Devices {
fmt.Println(key, value)
}
将结构更改为上面的地图,然后用范围循环遍历它,效果很好
- 1 回答
- 0 关注
- 96 浏览
添加回答
举报
0/150
提交
取消