You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	#145 interface {} customizatoin is recursive
This commit is contained in:
		| @@ -286,27 +286,6 @@ func Test_marshal_json_with_time(t *testing.T) { | ||||
| 	should.NotNil(obj.TF1.F2) | ||||
| } | ||||
|  | ||||
| func Test_unmarshal_empty_interface_as_int64(t *testing.T) { | ||||
| 	var obj interface{} | ||||
| 	RegisterTypeDecoderFunc("interface {}", func(ptr unsafe.Pointer, iter *Iterator) { | ||||
| 		switch iter.WhatIsNext() { | ||||
| 		case NumberValue: | ||||
| 			*(*interface{})(ptr) = iter.ReadInt64() | ||||
| 		default: | ||||
| 			*(*interface{})(ptr) = iter.Read() | ||||
| 		} | ||||
| 	}) | ||||
| 	should := require.New(t) | ||||
| 	Unmarshal([]byte("100"), &obj) | ||||
| 	should.Equal(int64(100), obj) | ||||
| 	Unmarshal([]byte(`"hello"`), &obj) | ||||
| 	should.Equal("hello", obj) | ||||
| 	var arr []interface{} | ||||
| 	Unmarshal([]byte("[100]"), &arr) | ||||
| 	should.Equal(int64(100), arr[0]) | ||||
| } | ||||
|  | ||||
|  | ||||
| func Test_customize_tag_key(t *testing.T) { | ||||
|  | ||||
| 	type TestObject struct { | ||||
| @@ -318,4 +297,20 @@ func Test_customize_tag_key(t *testing.T) { | ||||
| 	str, err := json.MarshalToString(TestObject{"hello"}) | ||||
| 	should.Nil(err) | ||||
| 	should.Equal(`{"field":"hello"}`, str) | ||||
| } | ||||
|  | ||||
| func Test_recursive_empty_interface_customization(t *testing.T) { | ||||
| 	t.Skip() | ||||
| 	var obj interface{} | ||||
| 	RegisterTypeDecoderFunc("interface {}", func(ptr unsafe.Pointer, iter *Iterator) { | ||||
| 		switch iter.WhatIsNext() { | ||||
| 		case NumberValue: | ||||
| 			*(*interface{})(ptr) = iter.ReadInt64() | ||||
| 		default: | ||||
| 			*(*interface{})(ptr) = iter.Read() | ||||
| 		} | ||||
| 	}) | ||||
| 	should := require.New(t) | ||||
| 	Unmarshal([]byte("[100]"), &obj) | ||||
| 	should.Equal([]interface{}{int64(100)}, obj) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user