redis golang:如何将类型interface {}转换为数组

brvekthn  于 2022-10-31  发布在  Redis
关注(0)|答案(2)|浏览(195)

我有一个包含Redis中对象的JSON数组,我想在其中循环,但是当我获取数据时,类型是interface{},所以我不能遍历interface{}类型

array := redis.Do(ctx, "JSON.GET", "key")

arrayResult, e := array.Result()

if e != nil {
    log.Printf("could not get json with command  %s", e)
}

for _, i := range arrayResult {
    fmt.Printf(i)
}
lrpiutwd

lrpiutwd1#

我相信你应该能做到

for _, i := range arrayResult.([]byte) {
// do work here
}
js81xvg6

js81xvg62#

谢谢你们,我找到了一个解决方案。所以一开始我需要把arrayResult转换成字节。然后我把它解组成一个strcut,所以现在我可以覆盖它了。

array := redis.Do(ctx, "JSON.GET", "key")
arrayResult, e := array.Result()
if e != nil {
   log.Printf("could not get json with command  %s", e)
}

byteKey := []byte(fmt.Sprintf("%v", arrayResult.(interface{})))
RedisResult := struct{}
errUnmarshalRedisResult := json.Unmarshal(byteKey, &RedisResult)
if errUnmarshalRedisResult != nil {
       log.Printf("cannot Unmarshal msg %s", errUnmarshalRedisResult)
}

for _, i := range RedisResult {
   fmt.Printf(i)
}

相关问题