in internal/encoding/decode.go [583:620]
func readAnyMap(r *buffer.Buffer) (any, error) {
var m map[any]any
err := (*mapAnyAny)(&m).Unmarshal(r)
if err != nil {
return nil, err
}
if len(m) == 0 {
return m, nil
}
stringKeys := true
Loop:
for key := range m {
switch key.(type) {
case string:
case Symbol:
default:
stringKeys = false
break Loop
}
}
if stringKeys {
mm := make(map[string]any, len(m))
for key, value := range m {
switch key := key.(type) {
case string:
mm[key] = value
case Symbol:
mm[string(key)] = value
}
}
return mm, nil
}
return m, nil
}