| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | // Copyright 2014 Manu Martinez-Almeida.  All rights reserved.// Use of this source code is governed by a MIT style// license that can be found in the LICENSE file.package bindingimport (	"bytes"	"fmt"	"io"	"net/http"	"encoding/json"	//"github.com/gin-gonic/gin/internal/json")// EnableDecoderUseNumber is used to call the UseNumber method on the JSON// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an// interface{} as a Number instead of as a float64.var EnableDecoderUseNumber = falsetype jsonBinding struct{}func (jsonBinding) Name() string {	return "json"}func (jsonBinding) Bind(req *http.Request, obj interface{}) error {	if req == nil || req.Body == nil {		return fmt.Errorf("invalid request")	}	return decodeJSON(req.Body, obj)}func (jsonBinding) BindBody(body []byte, obj interface{}) error {	return decodeJSON(bytes.NewReader(body), obj)}func decodeJSON(r io.Reader, obj interface{}) error {	decoder := json.NewDecoder(r)	if EnableDecoderUseNumber {		decoder.UseNumber()	}	if err := decoder.Decode(obj); err != nil {		return err	}	return validate(obj)}
 |