以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)
你期待的结果是什么?实际看到的错误信息又是什么?