Skip to content
This repository was archived by the owner on Dec 15, 2025. It is now read-only.

Commit 9c35863

Browse files
committed
#144 make []byte support Unmarshaler&Marshaler
1 parent 1cfa233 commit 9c35863

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

feature_reflect.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)