Bumps [github.com/labstack/echo/v4](https://github.com/labstack/echo) from 4.1.11 to 4.5.0. - [Release notes](https://github.com/labstack/echo/releases) - [Changelog](https://github.com/labstack/echo/blob/master/CHANGELOG.md) - [Commits](https://github.com/labstack/echo/compare/v4.1.11...v4.5.0) --- updated-dependencies: - dependency-name: github.com/labstack/echo/v4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
31 lines
1.1 KiB
Go
31 lines
1.1 KiB
Go
package echo
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
// DefaultJSONSerializer implements JSON encoding using encoding/json.
|
|
type DefaultJSONSerializer struct{}
|
|
|
|
// Serialize converts an interface into a json and writes it to the response.
|
|
// You can optionally use the indent parameter to produce pretty JSONs.
|
|
func (d DefaultJSONSerializer) Serialize(c Context, i interface{}, indent string) error {
|
|
enc := json.NewEncoder(c.Response())
|
|
if indent != "" {
|
|
enc.SetIndent("", indent)
|
|
}
|
|
return enc.Encode(i)
|
|
}
|
|
|
|
// Deserialize reads a JSON from a request body and converts it into an interface.
|
|
func (d DefaultJSONSerializer) Deserialize(c Context, i interface{}) error {
|
|
err := json.NewDecoder(c.Request().Body).Decode(i)
|
|
if ute, ok := err.(*json.UnmarshalTypeError); ok {
|
|
return 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)
|
|
} else if se, ok := err.(*json.SyntaxError); ok {
|
|
return NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Syntax error: offset=%v, error=%v", se.Offset, se.Error())).SetInternal(err)
|
|
}
|
|
return err
|
|
}
|