MCPcopy Create free account
hub / github.com/DeAI-Artist/Linkis / encodeReflectList

Function encodeReflectList

libs/json/encoder.go:118–151  ·  view source on GitHub ↗
(w io.Writer, rv reflect.Value)

Source from the content-addressed store, hash-verified

116}
117
118func encodeReflectList(w io.Writer, rv reflect.Value) error {
119 // Emit nil slices as null.
120 if rv.Kind() == reflect.Slice && rv.IsNil() {
121 return writeStr(w, "null")
122 }
123
124 // Encode byte slices as base64 with the stdlib encoder.
125 if rv.Type().Elem().Kind() == reflect.Uint8 {
126 // Stdlib does not base64-encode byte arrays, only slices, so we copy to slice.
127 if rv.Type().Kind() == reflect.Array {
128 slice := reflect.MakeSlice(reflect.SliceOf(rv.Type().Elem()), rv.Len(), rv.Len())
129 reflect.Copy(slice, rv)
130 rv = slice
131 }
132 return encodeStdlib(w, rv.Interface())
133 }
134
135 // Anything else we recursively encode ourselves.
136 length := rv.Len()
137 if err := writeStr(w, "["); err != nil {
138 return err
139 }
140 for i := 0; i < length; i++ {
141 if err := encodeReflect(w, rv.Index(i)); err != nil {
142 return err
143 }
144 if i < length-1 {
145 if err := writeStr(w, ","); err != nil {
146 return err
147 }
148 }
149 }
150 return writeStr(w, "]")
151}
152
153func encodeReflectMap(w io.Writer, rv reflect.Value) error {
154 if rv.Type().Key().Kind() != reflect.String {

Callers 1

encodeReflectFunction · 0.85

Calls 7

writeStrFunction · 0.85
encodeStdlibFunction · 0.85
encodeReflectFunction · 0.85
TypeMethod · 0.65
CopyMethod · 0.65
IndexMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected