gin框架02--json渲染
- 介绍
- json 渲染案例
- 注意事项
- 说明
介绍
Gin 框架对json支持的较晚上,开发人员可以按需选择多种 json 格式返回。
使用 AsciiJSON 生成具有转义的非 ASCII 字符的 ASCII-only JSON, 使用 PureJSON 输出纯json且不会转码,使用 IndentedJSON 输出可以缩进的 json信息。更多详细内容可以在 context.go 中寻找答案。
json 渲染案例
案例:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type user struct {
ID int `json:"id"`
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
r := gin.Default()
r.GET("/someJson", func(c *gin.Context) {
data := map[string]interface{}{
"lang": "GO语言",
"tag": "<br>",
}
c.AsciiJSON(http.StatusOK, data)
})
r.GET("/pureJson", func(c *gin.Context) {
c.PureJSON(200, gin.H{
"message": "<b> Hello, World!</b>",
})
})
r.GET("/indentJson", func(c *gin.Context) {
users := []user{{ID: 123, Name: "张三", Age: 23}, {ID: 124, Name: "李四", Age: 24}}
c.IndentedJSON(200, users)
})
r.Run(":8080")
}
测试:
AsciiJSON 输出
$ curl http://127.0.0.1:8080/someJson
{"lang":"GO\u8bed\u8a00","tag":"\u003cbr\u003e"}
PureJSON 输出
$ curl http://127.0.0.1:8080/pureJson
{"message":"<b> Hello, World!</b>"}
IndentedJSON 输出
$ curl http://127.0.0.1:8080/indentJson
[
{
"id": 123,
"name": "张三",
"age": 23
},
{
"id": 124,
"name": "李四",
"age": 24
}
]
注意事项
- 除了上述 AsciiJSON、IndentedJSON 和 PureJSON 外, 还有 JSON、XML、YAML、ProtoBuf、String 等。详细内容可参考context.go
说明
gin官方文档 AsciiJSONGolang Gin 实战(八)| JSON渲染输出github gin