converts.go 607 B

1234567891011121314151617181920212223242526272829303132
  1. package mapping
  2. import "fmt"
  3. // ConvertAnyMap converts a map[any]any to a map[string]any
  4. // please make sure i is a map[any]any
  5. func ConvertAnyMap(i any) any {
  6. switch v := i.(type) {
  7. case map[any]any:
  8. m2 := make(map[string]any)
  9. for k, val := range v {
  10. keyStr := fmt.Sprintf("%v", k)
  11. m2[keyStr] = ConvertAnyMap(val)
  12. }
  13. return m2
  14. case map[string]any:
  15. m2 := make(map[string]any)
  16. for k, val := range v {
  17. m2[k] = ConvertAnyMap(val)
  18. }
  19. return m2
  20. case []any:
  21. m2 := make([]any, len(v))
  22. for i, val := range v {
  23. m2[i] = ConvertAnyMap(val)
  24. }
  25. return m2
  26. default:
  27. return v
  28. }
  29. }