MCPcopy Index your code
hub / github.com/segmentio/encoding / encodeJSONMarshaler

Method encodeJSONMarshaler

json/encode.go:855–885  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer, t reflect.Type, pointer bool)

Source from the content-addressed store, hash-verified

853}
854
855func (e encoder) encodeJSONMarshaler(b []byte, p unsafe.Pointer, t reflect.Type, pointer bool) ([]byte, error) {
856 v := reflect.NewAt(t, p)
857
858 if !pointer {
859 v = v.Elem()
860 }
861
862 switch v.Kind() {
863 case reflect.Ptr, reflect.Interface:
864 if v.IsNil() {
865 return append(b, "null"...), nil
866 }
867 }
868
869 j, err := v.Interface().(Marshaler).MarshalJSON()
870 if err != nil {
871 return b, err
872 }
873
874 d := decoder{}
875 s, _, _, err := d.parseValue(j)
876 if err != nil {
877 return b, &MarshalerError{Type: t, Err: err}
878 }
879
880 if (e.flags & EscapeHTML) != 0 {
881 return appendCompactEscapeHTML(b, s), nil
882 }
883
884 return append(b, s...), nil
885}
886
887func (e encoder) encodeTextMarshaler(b []byte, p unsafe.Pointer, t reflect.Type, pointer bool) ([]byte, error) {
888 v := reflect.NewAt(t, p)

Callers 1

Calls 5

parseValueMethod · 0.95
appendCompactEscapeHTMLFunction · 0.85
ElemMethod · 0.65
KindMethod · 0.65
MarshalJSONMethod · 0.45

Tested by

no test coverage detected