refactor(json): make jsonite optional with build tags (#1026)
* refactor(json): Restore gin support for app engine Create new folder to support multiple json package. restore gin support for app engine (disable jsonite through tags) use jsoniter $ go build -tags=jsoniter . use default json $ go build . Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com> * rename json file. Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com> * docs(json): add build tags document. * fix(docs): markdown format. * fix(json): missing space.
This commit is contained in:
		
				
					committed by
					
						 Javier Provecho Fernandez
						Javier Provecho Fernandez
					
				
			
			
				
	
			
			
			
						parent
						
							7180f2ba62
						
					
				
				
					commit
					ce670a6497
				
			| @ -88,7 +88,6 @@ BenchmarkZeus_GithubAll 		| 2000 		| 944234 	| 300688 	| 2648 | |||||||
| - [x] Battle tested | - [x] Battle tested | ||||||
| - [x] API frozen, new releases will not break your code. | - [x] API frozen, new releases will not break your code. | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Start using it | ## Start using it | ||||||
|  |  | ||||||
| 1. Download and install it: | 1. Download and install it: | ||||||
| @ -141,6 +140,14 @@ $ curl https://raw.githubusercontent.com/gin-gonic/gin/master/examples/basic/mai | |||||||
| $ go run main.go | $ go run main.go | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | ## Build with [jsoniter](https://github.com/json-iterator/go) | ||||||
|  |  | ||||||
|  | Gin use `encoding/json` as default json package but you can change to [jsoniter](https://github.com/json-iterator/go) by build from other tags. | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | $ go build -tags=jsoniter . | ||||||
|  | ``` | ||||||
|  |  | ||||||
| ## API Examples | ## API Examples | ||||||
|  |  | ||||||
| ### Using GET, POST, PUT, PATCH, DELETE and OPTIONS | ### Using GET, POST, PUT, PATCH, DELETE and OPTIONS | ||||||
|  | |||||||
| @ -7,11 +7,10 @@ package binding | |||||||
| import ( | import ( | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"github.com/json-iterator/go" | 	"github.com/gin-gonic/gin/json" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var ( | var ( | ||||||
| 	json                   = jsoniter.ConfigCompatibleWithStandardLibrary |  | ||||||
| 	EnableDecoderUseNumber = false | 	EnableDecoderUseNumber = false | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | |||||||
| @ -9,11 +9,9 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"reflect" | 	"reflect" | ||||||
|  |  | ||||||
| 	"github.com/json-iterator/go" | 	"github.com/gin-gonic/gin/json" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var json = jsoniter.ConfigCompatibleWithStandardLibrary |  | ||||||
|  |  | ||||||
| type ErrorType uint64 | type ErrorType uint64 | ||||||
|  |  | ||||||
| const ( | const ( | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ import ( | |||||||
| 	"errors" | 	"errors" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/gin-gonic/gin/json" | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								json/json.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								json/json.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | // Copyright 2017 Bo-Yi Wu.  All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build !jsoniter | ||||||
|  |  | ||||||
|  | package json | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"encoding/json" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	Marshal       = json.Marshal | ||||||
|  | 	MarshalIndent = json.MarshalIndent | ||||||
|  | 	NewDecoder    = json.NewDecoder | ||||||
|  | ) | ||||||
							
								
								
									
										18
									
								
								json/jsoniter.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								json/jsoniter.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2017 Bo-Yi Wu.  All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build jsoniter | ||||||
|  |  | ||||||
|  | package json | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/json-iterator/go" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	json          = jsoniter.ConfigCompatibleWithStandardLibrary | ||||||
|  | 	Marshal       = json.Marshal | ||||||
|  | 	MarshalIndent = json.MarshalIndent | ||||||
|  | 	NewDecoder    = json.NewDecoder | ||||||
|  | ) | ||||||
| @ -8,11 +8,9 @@ import ( | |||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"github.com/json-iterator/go" | 	"github.com/gin-gonic/gin/json" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var json = jsoniter.ConfigCompatibleWithStandardLibrary |  | ||||||
|  |  | ||||||
| type JSON struct { | type JSON struct { | ||||||
| 	Data interface{} | 	Data interface{} | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user