gf
gf copied to clipboard
WriteJsonExit returns 4 more characters null.
Go version
go version go1.22.5 windows/amd64
GoFrame version
v2.7.0
Can this bug be reproduced with the latest release?
Option Yes
What did you do?
// 登录成功后返回token func PersonLoginAfter(r *ghttp.Request, respData gtoken.Resp) { if respData.Success() { r.Response.WriteJsonExit(g.Map{ "state": consts.SUCCESS, "message": "登录成功!", "data": respData.GetString(gtoken.KeyToken), // 登录成功后data中存放了token }) } else { r.Response.WriteJsonExit(g.Map{ "state": consts.ERROR, "message": "登录失败!", }) } }
为什么前端收到的json最后有4个字符null??例如: res: {"data":"lUZ5V4m1yfFIniYE5PNpLKCUPdYG2qcBrcYijM4klsS6wZIKfs0Py/JZ0xRcga1w","message":"登录成功!","state":1}null
然后就因为null这4个字符,前端反序列化失败,然后要做字符串截取去掉这4个字符,再反序列化,真奇怪!
另外我有个后置中间件,代码如下: // HandleReturn 后置中间件:处理返回数据 func (s *middlewareService) HandleReturn(r *ghttp.Request) { r.Middleware.Next() err := r.GetError() if err != nil { r.Response.WriteJsonExit(g.Map{ "state": consts.ERROR, "message": err.Error(), }) } else { r.Response.WriteJsonExit(r.GetHandlerResponse()) } }会是这个出问题了?
What did you see happen?
现在前端收到的json数据是: {"data":"lUZ5V4m1yfFIniYE5PNpLKCUPdYG2qcBrcYijM4klsS6wZIKfs0Py/JZ0xRcga1w","message":"登录成功!","state":1}null
What did you expect to see?
我期待前端收到的json数据是: {"data":"lUZ5V4m1yfFIniYE5PNpLKCUPdYG2qcBrcYijM4klsS6wZIKfs0Py/JZ0xRcga1w","message":"登录成功!","state":1}