MCPcopy Create free account
hub / github.com/blues/note / encode

Method encode

jsonxt/encode.go:679–706  ·  view source on GitHub ↗
(e *encodeState, v reflect.Value, opts encOpts)

Source from the content-addressed store, hash-verified

677}
678
679func (me mapEncoder) encode(e *encodeState, v reflect.Value, opts encOpts) {
680 if v.IsNil() {
681 e.WriteString("null")
682 return
683 }
684 e.WriteByte('{')
685
686 // Extract and sort the keys.
687 keys := v.MapKeys()
688 sv := make([]reflectWithString, len(keys))
689 for i, v := range keys {
690 sv[i].v = v
691 if err := sv[i].resolve(); err != nil {
692 e.error(&MarshalerError{v.Type(), err})
693 }
694 }
695 sort.Slice(sv, func(i, j int) bool { return sv[i].s < sv[j].s })
696
697 for i, kv := range sv {
698 if i > 0 {
699 e.WriteByte(',')
700 }
701 e.string(kv.s, opts.escapeHTML)
702 e.WriteByte(':')
703 me.elemEnc(e, v.MapIndex(kv.v), opts)
704 }
705 e.WriteByte('}')
706}
707
708func newMapEncoder(t reflect.Type) encoderFunc {
709 switch t.Key().Kind() {

Callers

nothing calls this directly

Calls 3

resolveMethod · 0.80
stringMethod · 0.80
errorMethod · 0.45

Tested by

no test coverage detected