diff --git a/app.go b/app.go index 9f946b57..4c039cfe 100644 --- a/app.go +++ b/app.go @@ -12,6 +12,7 @@ package fiber import ( "bufio" "crypto/tls" + "encoding/json" "errors" "fmt" "net" @@ -272,11 +273,11 @@ type Config struct { // RedirectFixedPath bool // When set by an external client of Fiber it will use the provided implementation of a - // JSONExectuor + // JSONMarshal // - // Allowing for flexibility in using another json library for marshalling/unmarshalling - // Default: utils.DefaultJSONExecutor - JSONEngineExecutor utils.JSONExecutor `json:"-"` + // Allowing for flexibility in using another json library for encoding + // Default: json.Marshal + JSONEncoder utils.JSONMarshal `json:"-"` } // Static defines configuration options when defining static assets. @@ -385,8 +386,8 @@ func New(config ...Config) *App { if app.config.ErrorHandler == nil { app.config.ErrorHandler = DefaultErrorHandler } - if app.config.JSONEngineExecutor == nil { - app.config.JSONEngineExecutor = &utils.DefaultJSONExecutor{} + if app.config.JSONEncoder == nil { + app.config.JSONEncoder = json.Marshal } // Init app diff --git a/ctx.go b/ctx.go index 57b7996a..acb1492a 100644 --- a/ctx.go +++ b/ctx.go @@ -536,7 +536,7 @@ func (c *Ctx) Is(extension string) bool { // and a nil slice encodes as the null JSON value. // This method also sets the content header to application/json. func (c *Ctx) JSON(data interface{}) error { - raw, err := c.app.config.JSONEngineExecutor.Marshal(data) + raw, err := c.app.config.JSONEncoder(data) if err != nil { return err } diff --git a/utils/json_executor.go b/utils/json_executor.go deleted file mode 100644 index 9fd7c5b7..00000000 --- a/utils/json_executor.go +++ /dev/null @@ -1,21 +0,0 @@ -package utils - -import ( - "encoding/json" -) - -// JSONExecutor provides the minimal API for basic JSON engine functionality -type JSONExecutor interface { - Marshal(interface{}) ([]byte, error) -} - -// DefaultJSONExecutor is a blank structure, in place to satisfy the API -// of a JSONExecutor -type DefaultJSONExecutor struct { -} - -// Marshal takes in an arbitrary interface and returns an encoding of -// the provided interface -func (d *DefaultJSONExecutor) Marshal(v interface{}) ([]byte, error) { - return json.Marshal(v) -} diff --git a/utils/json_marshal.go b/utils/json_marshal.go new file mode 100644 index 00000000..692b49a4 --- /dev/null +++ b/utils/json_marshal.go @@ -0,0 +1,5 @@ +package utils + +// JSONMarshal is the standard definition of representing a Go structure in +// json format +type JSONMarshal func(interface{}) ([]byte, error) diff --git a/utils/json_executor_test.go b/utils/json_marshal_test.go similarity index 70% rename from utils/json_executor_test.go rename to utils/json_marshal_test.go index b0ea40a5..08501d96 100644 --- a/utils/json_executor_test.go +++ b/utils/json_marshal_test.go @@ -1,10 +1,11 @@ package utils import ( + "encoding/json" "testing" ) -func TestDefaultJSONExecutor(t *testing.T) { +func TestDefaultJSONEncoder(t *testing.T) { type SampleStructure struct { ImportantString string `json:"important_string"` } @@ -14,11 +15,11 @@ func TestDefaultJSONExecutor(t *testing.T) { ImportantString: "Hello World", } importantString = `{"important_string":"Hello World"}` + + jsonEncoder JSONMarshal = json.Marshal ) - jsonExecutor := DefaultJSONExecutor{} - - raw, err := jsonExecutor.Marshal(sampleStructure) + raw, err := jsonEncoder(sampleStructure) AssertEqual(t, err, nil) AssertEqual(t, string(raw), importantString)