beego cache redis json 取出来json对象有哪些方式?
以json字符串存入redis中的数据取出来需要json.Unmarshal()反解析吗? 为啥解析不出来
问题出现的环境背景及自己尝试过哪些方法
cache.GetString(cache_con.Get("aaa")
这种方式取出来的是图3 我想取出来像图2一样json.Marshal()函数执行前的数据
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
resp :=make(map[string]interface{})
resp["errno"] = models.RECODE_OK
resp["errmsg"] = models.RecodeText(models.RECODE_OK)
defer c.RetData(resp)
cache_con, err := cache.NewCache("redis",`{"key":"lovehome","conn":":6379","dbNum":"0","password":""}`)
if areaData := cache_con.Get("area"); areaData !=nil {
beego.Info("get data from cache===========",areaData.([]uint8))
resp["data"]=areaData.([]uint8);
return
}
//beego.Info("cache success",string(cache_con.Get("aaa").([]byte)))
//beego.Info("cache s",cache.GetString(cache_con.Get("aaa")))
//从mysql数据库拿到area数据
var areas []models.Area
o :=orm.NewOrm()
num,err :=o.QueryTable("area").All(&areas)
if err !=nil {
beego.Info("数据库错误")
resp["error"]=400
resp["errmsg"]="失败"
c.RetData(resp)
return
}
if num==0 {
resp["error"]=400
resp["errmsg"]="没有查到数据"
return
}
resp["data"]=areas
json_str,err :=json.Marshal(areas)
if err !=nil {
beego.Info("json err")
return
}
errCache :=cache_con.Put("area",json_str,time.Second*3600)
if errCache !=nil{
beego.Error("cache err")
}
beego.Info("resp",resp,"num",num)
你期待的结果是什么?实际看到的错误信息又是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是不是因为
json.Marshl()
的返回类型不是字符串, 返回的是[]byte, 存的时候应该使用string(json_str)
转成字符串后再存, 取得时候转成byte后反序列化json.Unmarshal([]byte(cacheStr), &areas)