mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/kataras/iris/v12"
|
||
|
|
||
|
// This is a 3rd-party library, which you can use to override the default behavior of ctx.JSON method.
|
||
|
"github.com/bytedance/sonic"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
applyIrisGlobalPatches() // <- IMPORTANT.
|
||
|
}
|
||
|
|
||
|
func applyIrisGlobalPatches() {
|
||
|
var json = sonic.ConfigFastest
|
||
|
|
||
|
// Apply global modifications to the context REST writers
|
||
|
// without modifications to your web server's handlers code.
|
||
|
iris.Patches().Context().Writers().JSON(func(ctx iris.Context, v interface{}, options *iris.JSON) error {
|
||
|
enc := json.NewEncoder(ctx.ResponseWriter())
|
||
|
enc.SetEscapeHTML(!options.UnescapeHTML)
|
||
|
enc.SetIndent("", options.Indent)
|
||
|
return enc.Encode(v)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// User example struct for json.
|
||
|
type User struct {
|
||
|
Firstname string `json:"firstname"`
|
||
|
Lastname string `json:"lastname"`
|
||
|
City string `json:"city"`
|
||
|
Age int `json:"age"`
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
app := iris.New()
|
||
|
|
||
|
app.Get("/", func(ctx iris.Context) {
|
||
|
user := User{
|
||
|
Firstname: "Gerasimos",
|
||
|
Lastname: "Maropoulos",
|
||
|
City: "Athens",
|
||
|
Age: 29,
|
||
|
}
|
||
|
|
||
|
// Use ctx.JSON as you used to.
|
||
|
ctx.JSON(user)
|
||
|
})
|
||
|
|
||
|
app.Listen(":8080")
|
||
|
}
|