gf icon indicating copy to clipboard operation
gf copied to clipboard

WriteJsonExit returns 4 more characters null.

Open windf17 opened this issue 6 months ago • 12 comments

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}

windf17 avatar Aug 09 '24 10:08 windf17