无法将字符串映射转换为 json
Cannot convert string map to json
我想用 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....
这里有什么问题?我该如何解决?
变量jmap
的类型是[]byte
。在 c.JSON()
中对 JSON 编码器的调用将 []byte
编组为 base64 编码字符串,如您在输出中所见。
要解决此问题,请使用一级 JSON 编码,将地图直接传递给 c.JSON:
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
,可以直接使用:
hashMap, err := redis.StringMap(conn.Do("HGETALL", MyDict))
if err != nil {
// handle error
}
c.JSON(200, hashMap)
我想用 redigo:
从 redis 接收到的散列生成一个 jsonfunc 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....
这里有什么问题?我该如何解决?
变量jmap
的类型是[]byte
。在 c.JSON()
中对 JSON 编码器的调用将 []byte
编组为 base64 编码字符串,如您在输出中所见。
要解决此问题,请使用一级 JSON 编码,将地图直接传递给 c.JSON:
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
,可以直接使用:
hashMap, err := redis.StringMap(conn.Do("HGETALL", MyDict))
if err != nil {
// handle error
}
c.JSON(200, hashMap)