问题描述初学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.gofuncmain(){e:=echo.New()e.GET("/getdata/:id",contract.dataGet)log.Error().Err(e.Start(":8080")).Timestamp()}data.gopackagecontractimport("github.com/labstack/echo/v4""github.com/go-redis/redis""github.com/wulijun/go-php-serialize/phpserialize")func(sData)BuildData(datastring)(interface{},bool){ifdata==""{returnnil,true}d,err:=phpserialize.Decode(data)iferr!=nil{returnnil,true}returnd,false}funcdataGet(cecho.Context)error{//省略redis配置data:=client.(*redis.Client).Get(cacheKey).Val()result,e:=BuildData(data)ife{returnecho.NewHTTPError(400,echo.Map{"message":"dataerror."})}returnc.JSON(200,result)}看到的返回结果"{\"name\":\"xiaoming\",\"nickname\":\"neo\"}"期待的结果{"name":"xiaoming","nickname":"neo"}
2 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
声明一个新类型,比如typePersonStruct{NamestringNicknamestring}将json字符串反序列化成这个对象再按照c.Json()返回,应该返回的就是指定的json对象了
添加回答
举报
0/150
提交
取消