MCPcopy Create free account
hub / github.com/segmentio/encoding / encodeMap

Method encodeMap

json/encode.go:308–343  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer, t reflect.Type, encodeKey, encodeValue encodeFunc, sortKeys sortFunc)

Source from the content-addressed store, hash-verified

306}
307
308func (e encoder) encodeMap(b []byte, p unsafe.Pointer, t reflect.Type, encodeKey, encodeValue encodeFunc, sortKeys sortFunc) ([]byte, error) {
309 m := reflect.NewAt(t, p).Elem()
310 if m.IsNil() {
311 return append(b, "null"...), nil
312 }
313
314 keys := m.MapKeys()
315 if sortKeys != nil && (e.flags&SortMapKeys) != 0 {
316 sortKeys(keys)
317 }
318
319 start := len(b)
320 var err error
321 b = append(b, '{')
322
323 for i, k := range keys {
324 v := m.MapIndex(k)
325
326 if i != 0 {
327 b = append(b, ',')
328 }
329
330 if b, err = encodeKey(e, b, (*iface)(unsafe.Pointer(&k)).ptr); err != nil {
331 return b[:start], err
332 }
333
334 b = append(b, ':')
335
336 if b, err = encodeValue(e, b, (*iface)(unsafe.Pointer(&v)).ptr); err != nil {
337 return b[:start], err
338 }
339 }
340
341 b = append(b, '}')
342 return b, nil
343}
344
345type element struct {
346 key string

Callers 1

constructMapEncodeFuncFunction · 0.80

Calls 1

ElemMethod · 0.65

Tested by

no test coverage detected