问题描述
初学 golang,基础尚薄弱,遇到问题,尝试在网上找了一些方法,但感觉始终在乱撞,没理出思路。
项目用的是 golang,框架用的是 Echo。
想取 redis 中的数据并以 json 的形式返回出来。
redis 中的数据是经过 php 序列化的 json(另外的 Php 服务存储进来的),我先用 phpserialize.Decode ( github.com/wulijun/go-php-serialize/phpserialize )把从 redis 中取出的数据反序列化,然后用 JSON(200, data) 返回。
redis 存储的数据是这个样子(json 整体作为一个字符串):
s:36:"{"name":"xiaoming","nickname":"neo"}"
但是在返回后,是以字符串的形式返回的。
而我的期待是以 json 形式返回出来。
还请不吝赐教。
相关代码
main.go
func main() {
e := echo.New()
e.GET("/getdata/:id", contract.dataGet)
log.Error().Err(e.Start(":8080")).Timestamp()
}
data.go
package contract
import (
"github.com/labstack/echo/v4"
"github.com/go-redis/redis"
"github.com/wulijun/go-php-serialize/phpserialize"
)
func (s Data) BuildData(data string) (interface{}, bool) {
if data == "" {
return nil, true
}
d, err := phpserialize.Decode(data)
if err != nil {
return nil, true
}
return d, false
}
func dataGet(c echo.Context) error {
// 省略 redis 配置
data := client.(*redis.Client).Get(cacheKey).Val()
result, e := BuildData(data)
if e {
return echo.NewHTTPError(400, echo.Map{"message": "data error."})
}
return c.JSON(200, result)
}
看到的返回结果
"{"name":"xiaoming","nickname":"neo"}"
期待的结果
{"name":"xiaoming", "nickname":"neo"}