洛阳网站建设制作多少钱,一起做业网站登录,商城购物网站有哪些模块,专业模板建站价格最近使用了Redis的Hash#xff0c;把一个对象给存储到了hash里面#xff0c;具体如下#xff1a; 现在需要从RedisHash缓存里面把结果给取出来#xff0c;同时赋值到一个对象上面 result, err : global.GVA_REDIS.HGetAll(context.Background(), key).Result() 问题是resul…最近使用了Redis的Hash把一个对象给存储到了hash里面具体如下 现在需要从RedisHash缓存里面把结果给取出来同时赋值到一个对象上面 result, err : global.GVA_REDIS.HGetAll(context.Background(), key).Result() 问题是result是一个 map[string]string 类型我们直接把map[string][string]给序列化成json字符串是不符合我们预想的因为map的值是string类型为什么map的值不存int类型因为redis只能存储字符串但是对象上面有些属性是int类型的导致我们反序列化失败 既然不能直接序列化map成为一个符合我们结果的json字符串我们就自己构建一个json字符串 j : {for k, v : range result {j \ k \ : v ,}j j[:len(j)-1]j }err json.Unmarshal([]byte(j), ExamDetail)
然后我们再使用反序列化即可成功了 补充
当一个对象被存储在Redis的Hash里面的时候如果原本是int类型那存储到Hash的时候是没有字符串的两个如果是string类型是会有 但是其实两个value本质都是string我们正是通过这个关键点把map给反序列化到结构体上了并成功对应其各种类型