* resolve #368 add option to UseNumber() in gin.Context.BindJSON() * add test
This commit is contained in:
		
				
					committed by
					
						 Javier Provecho Fernandez
						Javier Provecho Fernandez
					
				
			
			
				
	
			
			
			
						parent
						
							b6256dbe0c
						
					
				
				
					commit
					fb7448f081
				
			| @ -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 | ||||
| 	} | ||||
|  | ||||
							
								
								
									
										4
									
								
								mode.go
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								mode.go
									
									
									
									
									
								
							| @ -64,6 +64,10 @@ func DisableBindValidation() { | ||||
| 	binding.Validator = nil | ||||
| } | ||||
|  | ||||
| func EnableJsonDecoderUseNumber() { | ||||
| 	binding.EnableDecoderUseNumber = true | ||||
| } | ||||
|  | ||||
| func Mode() string { | ||||
| 	return modeName | ||||
| } | ||||
|  | ||||
| @ -8,6 +8,7 @@ import ( | ||||
| 	"os" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/gin-gonic/gin/binding" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
|  | ||||
| @ -34,3 +35,9 @@ func TestSetMode(t *testing.T) { | ||||
|  | ||||
| 	assert.Panics(t, func() { SetMode("unknown") }) | ||||
| } | ||||
|  | ||||
| func TestEnableJsonDecoderUseNumber(t *testing.T) { | ||||
| 	assert.False(t, binding.EnableDecoderUseNumber) | ||||
| 	EnableJsonDecoderUseNumber() | ||||
| 	assert.True(t, binding.EnableDecoderUseNumber) | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user