@@ -285,13 +285,6 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error
285285 if typ .AssignableTo (jsoniterNumberType ) {
286286 return & jsoniterNumberCodec {}, nil
287287 }
288- if typ .Kind () == reflect .Slice && typ .Elem ().Kind () == reflect .Uint8 {
289- sliceDecoder , err := prefix ("[slice]" ).addToDecoder (decoderOfSlice (cfg , typ ))
290- if err != nil {
291- return nil , err
292- }
293- return & base64Codec {sliceDecoder : sliceDecoder }, nil
294- }
295288 if typ .Implements (unmarshalerType ) {
296289 templateInterface := reflect .New (typ ).Elem ().Interface ()
297290 var decoder ValDecoder = & unmarshalerDecoder {extractInterface (templateInterface )}
@@ -318,6 +311,13 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error
318311 var decoder ValDecoder = & textUnmarshalerDecoder {extractInterface (templateInterface )}
319312 return decoder , nil
320313 }
314+ if typ .Kind () == reflect .Slice && typ .Elem ().Kind () == reflect .Uint8 {
315+ sliceDecoder , err := prefix ("[slice]" ).addToDecoder (decoderOfSlice (cfg , typ ))
316+ if err != nil {
317+ return nil , err
318+ }
319+ return & base64Codec {sliceDecoder : sliceDecoder }, nil
320+ }
321321 if typ .Implements (anyType ) {
322322 return & anyCodec {}, nil
323323 }
@@ -451,9 +451,6 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
451451 if typ .AssignableTo (jsoniterNumberType ) {
452452 return & jsoniterNumberCodec {}, nil
453453 }
454- if typ .Kind () == reflect .Slice && typ .Elem ().Kind () == reflect .Uint8 {
455- return & base64Codec {}, nil
456- }
457454 if typ .Implements (marshalerType ) {
458455 checkIsEmpty , err := createCheckIsEmpty (typ )
459456 if err != nil {
@@ -484,6 +481,9 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
484481 }
485482 return encoder , nil
486483 }
484+ if typ .Kind () == reflect .Slice && typ .Elem ().Kind () == reflect .Uint8 {
485+ return & base64Codec {}, nil
486+ }
487487 if typ .Implements (anyType ) {
488488 return & anyCodec {}, nil
489489 }
0 commit comments