@@ -16,6 +16,7 @@ import (
1616 "github.com/jmoiron/sqlx"
1717 "github.com/labstack/echo/v4"
1818
19+ "github.com/goccy/go-json"
1920 "github.com/gorilla/sessions"
2021 "github.com/labstack/echo-contrib/session"
2122 echolog "github.com/labstack/gommon/log"
@@ -118,6 +119,23 @@ func initializeHandler(c echo.Context) error {
118119 })
119120}
120121
122+ type JSONSerializer struct {}
123+
124+ func (j * JSONSerializer ) Serialize (c echo.Context , i interface {}, indent string ) error {
125+ enc := json .NewEncoder (c .Response ())
126+ return enc .Encode (i )
127+ }
128+
129+ func (j * JSONSerializer ) Deserialize (c echo.Context , i interface {}) error {
130+ err := json .NewDecoder (c .Request ().Body ).Decode (i )
131+ if ute , ok := err .(* json.UnmarshalTypeError ); ok {
132+ return echo .NewHTTPError (http .StatusBadRequest , fmt .Sprintf ("Unmarshal type error: expected=%v, got=%v, field=%v, offset=%v" , ute .Type , ute .Value , ute .Field , ute .Offset )).SetInternal (err )
133+ } else if se , ok := err .(* json.SyntaxError ); ok {
134+ return echo .NewHTTPError (http .StatusBadRequest , fmt .Sprintf ("Syntax error: offset=%v, error=%v" , se .Offset , se .Error ())).SetInternal (err )
135+ }
136+ return err
137+ }
138+
121139func main () {
122140 e := echo .New ()
123141 e .Debug = true
@@ -128,6 +146,8 @@ func main() {
128146 e .Use (session .Middleware (cookieStore ))
129147 // e.Use(middleware.Recover())
130148
149+ e .JSONSerializer = & JSONSerializer {}
150+
131151 // 初期化
132152 e .POST ("/api/initialize" , initializeHandler )
133153
0 commit comments