MCPcopy Create free account
hub / github.com/Restream/reindexer / encodeMap

Method encodeMap

cjson/encoder.go:231–262  ·  view source on GitHub ↗
(v reflect.Value, rdser *Serializer, cache *ctagsWCache)

Source from the content-addressed store, hash-verified

229}
230
231func (enc *Encoder) encodeMap(v reflect.Value, rdser *Serializer, cache *ctagsWCache) error {
232 keys := v.MapKeys()
233
234 f := fieldInfo{}
235 for i, k := range keys {
236 keyName := ""
237 vv := v.MapIndex(k)
238 if i == 0 {
239 f = mkFieldInfo(vv, 0, reflect.StructField{})
240 }
241
242 switch k.Type().Kind() {
243 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
244 keyName = strconv.FormatInt(k.Int(), 10)
245 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
246 keyName = strconv.FormatUint(k.Uint(), 10)
247 case reflect.String:
248 keyName = k.String()
249 case reflect.Float32, reflect.Float64:
250 keyName = strconv.FormatFloat(k.Float(), 'g', -1, 64)
251 default:
252 panic(fmt.Errorf("Unsupported map key type %s ", k.Type().Kind().String()))
253 }
254
255 f.ctagName = enc.name2tag(keyName)
256 err := enc.encodeValue(vv, rdser, f, cache)
257 if err != nil {
258 return err
259 }
260 }
261 return nil
262}
263
264var hexCharToUint = [256]uint64{
265 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,

Callers 1

encodeValueMethod · 0.95

Calls 5

name2tagMethod · 0.95
encodeValueMethod · 0.95
mkFieldInfoFunction · 0.85
TypeMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected