@@ -445,7 +445,7 @@ func marshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) {
445445 e .WriteString ("null" )
446446 return
447447 }
448- m , ok := v . Interface ().( Marshaler )
448+ m , ok := reflect. TypeAssert [ Marshaler ]( v )
449449 if ! ok {
450450 e .WriteString ("null" )
451451 return
@@ -466,7 +466,7 @@ func addrMarshalerEncoder(e *encodeState, v reflect.Value, _ encOpts) {
466466 e .WriteString ("null" )
467467 return
468468 }
469- m := va . Interface ().( Marshaler )
469+ m , _ := reflect. TypeAssert [ Marshaler ]( va )
470470 b , err := m .MarshalJSON ()
471471 if err == nil {
472472 // copy JSON into buffer, checking validity.
@@ -482,7 +482,7 @@ func textMarshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) {
482482 e .WriteString ("null" )
483483 return
484484 }
485- m := v . Interface ().( encoding.TextMarshaler )
485+ m , _ := reflect. TypeAssert [ encoding.TextMarshaler ]( v )
486486 b , err := m .MarshalText ()
487487 if err != nil {
488488 e .error (& MarshalerError {v .Type (), err })
@@ -496,7 +496,7 @@ func addrTextMarshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) {
496496 e .WriteString ("null" )
497497 return
498498 }
499- m := va . Interface ().( encoding.TextMarshaler )
499+ m , _ := reflect. TypeAssert [ encoding.TextMarshaler ]( va )
500500 b , err := m .MarshalText ()
501501 if err != nil {
502502 e .error (& MarshalerError {v .Type (), err })
@@ -714,7 +714,7 @@ func orderedObjectEncoder(e *encodeState, v reflect.Value, opts encOpts) {
714714 return
715715 }
716716 e .WriteByte ('{' )
717- var ov = v . Interface ().( OrderedObject )
717+ var ov , _ = reflect. TypeAssert [ OrderedObject ]( v )
718718 for i , o := range ov {
719719 if i > 0 {
720720 e .WriteByte (',' )
@@ -885,7 +885,7 @@ func (w *reflectWithString) resolve() error {
885885 w .s = w .v .String ()
886886 return nil
887887 }
888- if tm , ok := w . v . Interface ().( encoding.TextMarshaler ); ok {
888+ if tm , ok := reflect. TypeAssert [ encoding.TextMarshaler ]( w . v ); ok {
889889 buf , err := tm .MarshalText ()
890890 w .s = string (buf )
891891 return err
0 commit comments