From f0c42ad9175260b0859660b9dfe52c47cb87bbd7 Mon Sep 17 00:00:00 2001 From: whirosan Date: Mon, 10 Jul 2017 01:08:26 +0900 Subject: [PATCH] resolve #368 add option to UseNumber() in gin.Context.BindJSON() --- binding/json.go | 8 +++++++- mode.go | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/binding/json.go b/binding/json.go index 20aae8cf..215fa9bf 100644 --- a/binding/json.go +++ b/binding/json.go @@ -10,7 +10,10 @@ import ( "github.com/json-iterator/go" ) -var json = jsoniter.ConfigCompatibleWithStandardLibrary +var ( + json = jsoniter.ConfigCompatibleWithStandardLibrary + EnableDecoderUseNumber = false +) type jsonBinding struct{} @@ -20,6 +23,9 @@ func (jsonBinding) Name() string { func (jsonBinding) Bind(req *http.Request, obj interface{}) error { decoder := json.NewDecoder(req.Body) + if EnableDecoderUseNumber { + decoder.UseNumber() + } if err := decoder.Decode(obj); err != nil { return err } diff --git a/mode.go b/mode.go index e24dbdc2..b0d2c27d 100644 --- a/mode.go +++ b/mode.go @@ -64,6 +64,10 @@ func DisableBindValidation() { binding.Validator = nil } +func EnableJsonDecoderUseNumber() { + binding.EnableDecoderUseNumber = true +} + func Mode() string { return modeName }