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

Method encodeStruct

json/encode.go:738–782  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer, st *structType)

Source from the content-addressed store, hash-verified

736}
737
738func (e encoder) encodeStruct(b []byte, p unsafe.Pointer, st *structType) ([]byte, error) {
739 start := len(b)
740 var err error
741 var k string
742 var n int
743 b = append(b, '{')
744
745 escapeHTML := (e.flags & EscapeHTML) != 0
746
747 for i := range st.fields {
748 f := &st.fields[i]
749 v := unsafe.Pointer(uintptr(p) + f.offset)
750
751 if f.omitempty && f.empty(v) {
752 continue
753 }
754
755 if escapeHTML {
756 k = f.html
757 } else {
758 k = f.json
759 }
760
761 lengthBeforeKey := len(b)
762
763 if n != 0 {
764 b = append(b, k...)
765 } else {
766 b = append(b, k[1:]...)
767 }
768
769 if b, err = f.codec.encode(e, b, v); err != nil {
770 if err == (rollback{}) {
771 b = b[:lengthBeforeKey]
772 continue
773 }
774 return b[:start], err
775 }
776
777 n++
778 }
779
780 b = append(b, '}')
781 return b, nil
782}
783
784type rollback struct{}
785

Callers 1

Calls 1

encodeMethod · 0.80

Tested by

no test coverage detected