我想使用redigo使用从redis接收的哈希值制作一个json:
func showHashtags(c *gin.Context) {
hashMap, err := redis.StringMap(conn.Do("HGETALL", MyDict))
if err != nil {
fmt.Println(err)
}
fmt.Println(hashMap) //works fine and shows the map
m := make(map[string]string)
for k, v := range hashMap {
m[k] = v
}
jmap, _ := json.Marshal(m)
c.JSON(200, jmap)
}
但是浏览器中的结果却像是乱码一样
"eyIgIjoiMiIsIjExX9iq24zYsSAiOiIxIiwiQWxsNFJhbWluICI6IjEiLCJCSUhFICI6IjMiLCJCVFNBUk1ZICI6IjIiLCJDTUJZTiAiOiIxI....
这是怎么了?我该如何解决?
答案 0 :(得分:7)
变量map_line_id_with_text
的类型为jmap
。如您在输出中看到的,在[]byte
中对JSON编码器的调用将c.JSON()
作为base64编码的字符串编组。
要解决此问题,请通过将地图直接传递到c.JSON来使用一种JSON编码级别:
[]byte
由于hashMap, err := redis.StringMap(conn.Do("HGETALL", MyDict))
if err != nil {
// handle error
}
m := make(map[string]string)
for k, v := range hashMap {
m[k] = v
}
c.JSON(200, m)
是hashMap
,您可以直接使用它:
map[string]string