猿问

Golang 以 Json 形式返回 Php 序列化的数据怎么回事哈啊?

问题描述
初学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
funcmain(){
e:=echo.New()
e.GET("/getdata/:id",contract.dataGet)
log.Error().Err(e.Start(":8080")).Timestamp()
}
data.go
packagecontract
import(
"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"}
慕娘9325324
浏览 437回答 2
2回答

眼眸繁星

声明一个新类型,比如typePersonStruct{NamestringNicknamestring}将json字符串反序列化成这个对象再按照c.Json()返回,应该返回的就是指定的json对象了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答