You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	rename
This commit is contained in:
		
							
								
								
									
										45
									
								
								jsoniter_customize_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								jsoniter_customize_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| package jsoniter | ||||
|  | ||||
| import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
| 	"unsafe" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| func Test_customize_type_decoder(t *testing.T) { | ||||
| 	RegisterTypeDecoder("time.Time", func(ptr unsafe.Pointer, iter *Iterator) { | ||||
| 		t, err := time.ParseInLocation("2006-01-02 15:04:05", iter.ReadString(), time.UTC) | ||||
| 		if err != nil { | ||||
| 			iter.Error = err | ||||
| 			return | ||||
| 		} | ||||
| 		*((*time.Time)(ptr)) = t | ||||
| 	}) | ||||
| 	defer ClearDecoders() | ||||
| 	val := time.Time{} | ||||
| 	err := Unmarshal([]byte(`"2016-12-05 08:43:28"`), &val) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 	year, month, day := val.Date() | ||||
| 	if year != 2016 || month != 12 || day != 5 { | ||||
| 		t.Fatal(val) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| type Tom struct { | ||||
| 	field1 string | ||||
| } | ||||
|  | ||||
| func Test_customize_field_decoder(t *testing.T) { | ||||
| 	RegisterFieldDecoder("jsoniter.Tom", "field1", func(ptr unsafe.Pointer, iter *Iterator) { | ||||
| 		*((*string)(ptr)) = strconv.Itoa(iter.ReadInt()) | ||||
| 	}) | ||||
| 	defer ClearDecoders() | ||||
| 	tom := Tom{} | ||||
| 	err := Unmarshal([]byte(`{"field1": 100}`), &tom) | ||||
| 	if err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user