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

Method encodeMapStringInterface

json/encode.go:363–439  ·  view source on GitHub ↗
(b []byte, p unsafe.Pointer)

Source from the content-addressed store, hash-verified

361}
362
363func (e encoder) encodeMapStringInterface(b []byte, p unsafe.Pointer) ([]byte, error) {
364 m := *(*map[string]any)(p)
365 if m == nil {
366 return append(b, "null"...), nil
367 }
368
369 if (e.flags & SortMapKeys) == 0 {
370 // Optimized code path when the program does not need the map keys to be
371 // sorted.
372 b = append(b, '{')
373
374 if len(m) != 0 {
375 var err error
376 i := 0
377
378 for k, v := range m {
379 if i != 0 {
380 b = append(b, ',')
381 }
382
383 b, _ = e.encodeString(b, unsafe.Pointer(&k))
384 b = append(b, ':')
385
386 b, err = Append(b, v, e.flags)
387 if err != nil {
388 return b, err
389 }
390
391 i++
392 }
393 }
394
395 b = append(b, '}')
396 return b, nil
397 }
398
399 s := mapslicePool.Get().(*mapslice)
400 if cap(s.elements) < len(m) {
401 s.elements = make([]element, 0, align(10, uintptr(len(m))))
402 }
403 for key, val := range m {
404 s.elements = append(s.elements, element{key: key, val: val})
405 }
406 sort.Sort(s)
407
408 start := len(b)
409 var err error
410 b = append(b, '{')
411
412 for i, elem := range s.elements {
413 if i != 0 {
414 b = append(b, ',')
415 }
416
417 b, _ = e.encodeString(b, unsafe.Pointer(&elem.key))
418 b = append(b, ':')
419
420 b, err = Append(b, elem.val, e.flags)

Callers

nothing calls this directly

Calls 3

encodeStringMethod · 0.95
AppendFunction · 0.70
alignFunction · 0.70

Tested by

no test coverage detected