package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
func main() {
s := g.Server()
s.Group("/", func(group *ghttp.RouterGroup) {
group.ALL("/xml", func(r *ghttp.Request) {
r.Response.Write(`<?xml version="1.0" encoding="UTF-8"?>`)
r.Response.WriteXml(g.Map{
"id": 1,
"name": "john",
})
})
})
s.SetPort(8199)
s.Run()
}
5 Comments
富贵 Rich
WriteJson方法返回的json数据如果有中文的话会出现乱码现象,在Safari浏览器显示不正确,其他浏览器没问题,请教下这个应该如何处理呢
富贵 Rich
在其他文档下发现了别人的回答,添加一个全局的后置中间件
overbeck.jack
强哥 郭强 请问
WirteJson
怎么设置大数字为字符串,类似 通用编解码-FAQ 中 JSON中的大数字精度丢失问题uint64
应该都是大数字,如:SnowflakeID目前的做法只能在对应的结构体上写入
json
标签是加入 string 标识,如下是否支持全局设置大数字自动设置为 string ,
WirteJson
调用 `gf.json`包,底层直接调用 json.Marshal皛心
// 登录成功后返回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())
}
}会是这个出问题了?
皛心
WriteJsonExit执行以后,后置中间件的代码还会执行么??