Beego框架下Redis缓存JSON数据的读取方法
在使用Beego框架将JSON数据存储到Redis后,读取时是否需要进行JSON反序列化取决于存储数据的类型。
问题背景
文中提到,将JSON字符串存储到Redis后,无法正确解析为JSON对象。
问题根源
代码分析表明,JSON数据存储到Redis时,使用了[]byte类型而非字符串类型。因此,读取数据时,需要先将其转换为[]byte类型,再使用json.Unmarshal()进行反序列化。
解决方案
存储代码修改:
将JSON数据转换为字符串后再存储到Redis:
errcache := cache_con.Put("area", string(json_str), time.Second*3600)
读取代码修改:
将读取的数据转换为[]byte类型后进行反序列化:
json.Unmarshal([]byte(cacheStr), &areas)
通过以上修改,即可正确读取并解析JSON对象。