猿问

从接口获取密钥

我知道标题说接口数组,但这就是打印数据的方式。


我在 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]

但我又不知道如何从中提取密钥


当年话下
浏览 97回答 1
1回答

一只名叫tom的猫

所以当我刚写完这个问题时,我发现地图是获取数据的正确方法。发布问题并自己回答,因为我认为这对其他人有用type Data struct {        Devices map[int]interface{} `json:"devices" bson:"devices"`}for key, value := range deviceIds.Devices {        fmt.Println(key, value)}将结构更改为上面的地图,然后用范围循环遍历它,效果很好
随时随地看视频慕课网APP

相关分类

Go
我要回答