You've already forked json-iterator
							
							
				mirror of
				https://github.com/json-iterator/go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	#144 make []byte support Unmarshaler&Marshaler
This commit is contained in:
		| @@ -285,13 +285,6 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error | ||||
| 	if typ.AssignableTo(jsoniterNumberType) { | ||||
| 		return &jsoniterNumberCodec{}, nil | ||||
| 	} | ||||
| 	if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { | ||||
| 		sliceDecoder, err := prefix("[slice]").addToDecoder(decoderOfSlice(cfg, typ)) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return &base64Codec{sliceDecoder: sliceDecoder}, nil | ||||
| 	} | ||||
| 	if typ.Implements(unmarshalerType) { | ||||
| 		templateInterface := reflect.New(typ).Elem().Interface() | ||||
| 		var decoder ValDecoder = &unmarshalerDecoder{extractInterface(templateInterface)} | ||||
| @@ -318,6 +311,13 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error | ||||
| 		var decoder ValDecoder = &textUnmarshalerDecoder{extractInterface(templateInterface)} | ||||
| 		return decoder, nil | ||||
| 	} | ||||
| 	if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { | ||||
| 		sliceDecoder, err := prefix("[slice]").addToDecoder(decoderOfSlice(cfg, typ)) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return &base64Codec{sliceDecoder: sliceDecoder}, nil | ||||
| 	} | ||||
| 	if typ.Implements(anyType) { | ||||
| 		return &anyCodec{}, nil | ||||
| 	} | ||||
| @@ -451,9 +451,6 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error | ||||
| 	if typ.AssignableTo(jsoniterNumberType) { | ||||
| 		return &jsoniterNumberCodec{}, nil | ||||
| 	} | ||||
| 	if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { | ||||
| 		return &base64Codec{}, nil | ||||
| 	} | ||||
| 	if typ.Implements(marshalerType) { | ||||
| 		checkIsEmpty, err := createCheckIsEmpty(typ) | ||||
| 		if err != nil { | ||||
| @@ -484,6 +481,9 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error | ||||
| 		} | ||||
| 		return encoder, nil | ||||
| 	} | ||||
| 	if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Uint8 { | ||||
| 		return &base64Codec{}, nil | ||||
| 	} | ||||
| 	if typ.Implements(anyType) { | ||||
| 		return &anyCodec{}, nil | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user