MCPcopy
hub / github.com/spf13/cast / ToStringMapStringSliceE

Function ToStringMapStringSliceE

map.go:65–127  ·  view source on GitHub ↗

ToStringMapStringSliceE casts any value to a map[string][]string type.

(i any)

Source from the content-addressed store, hash-verified

63
64// ToStringMapStringSliceE casts any value to a map[string][]string type.
65func ToStringMapStringSliceE(i any) (map[string][]string, error) {
66 m := map[string][]string{}
67
68 switch v := i.(type) {
69 case map[string][]string:
70 return v, nil
71 case map[string][]any:
72 for k, val := range v {
73 m[ToString(k)] = ToStringSlice(val)
74 }
75 return m, nil
76 case map[string]string:
77 for k, val := range v {
78 m[ToString(k)] = []string{val}
79 }
80 case map[string]any:
81 for k, val := range v {
82 switch vt := val.(type) {
83 case []any:
84 m[ToString(k)] = ToStringSlice(vt)
85 case []string:
86 m[ToString(k)] = vt
87 default:
88 m[ToString(k)] = []string{ToString(val)}
89 }
90 }
91 return m, nil
92 case map[any][]string:
93 for k, val := range v {
94 m[ToString(k)] = ToStringSlice(val)
95 }
96 return m, nil
97 case map[any]string:
98 for k, val := range v {
99 m[ToString(k)] = ToStringSlice(val)
100 }
101 return m, nil
102 case map[any][]any:
103 for k, val := range v {
104 m[ToString(k)] = ToStringSlice(val)
105 }
106 return m, nil
107 case map[any]any:
108 for k, val := range v {
109 key, err := ToStringE(k)
110 if err != nil {
111 return m, fmt.Errorf(errorMsg, i, i, m)
112 }
113 value, err := ToStringSliceE(val)
114 if err != nil {
115 return m, fmt.Errorf(errorMsg, i, i, m)
116 }
117 m[key] = value
118 }
119 case string:
120 err := jsonStringToObject(v, &m)
121 return m, err
122 default:

Callers 1

ToStringMapStringSliceFunction · 0.85

Calls 5

ToStringFunction · 0.85
ToStringSliceFunction · 0.85
ToStringEFunction · 0.85
ToStringSliceEFunction · 0.85
jsonStringToObjectFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…