mirror of
https://github.com/labstack/echo.git
synced 2026-04-26 21:03:34 +02:00
30 lines
892 B
Go
30 lines
892 B
Go
// SPDX-License-Identifier: MIT
|
|
// SPDX-FileCopyrightText: © 2015 LabStack LLC and Echo contributors
|
|
|
|
package echo
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// 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, target any, indent string) error {
|
|
enc := json.NewEncoder(c.Response())
|
|
if indent != "" {
|
|
enc.SetIndent("", indent)
|
|
}
|
|
return enc.Encode(target)
|
|
}
|
|
|
|
// Deserialize reads a JSON from a request body and converts it into an interface.
|
|
func (d DefaultJSONSerializer) Deserialize(c *Context, target any) error {
|
|
if err := json.NewDecoder(c.Request().Body).Decode(target); err != nil {
|
|
return ErrBadRequest.Wrap(err)
|
|
}
|
|
return nil
|
|
}
|