golang flatten nested map
type Data map[string]interface{}
func main() {
var data Data
data = Data{
"A": 1,
"B": 2,
"C": Data{
"D": 3,
"E": 4,
"G": Data{
"H": 123,
"Q": 456,
},
},
"F": 5,
"DATE": time.Now(),
}
newMap1 := flattenMap(data)
log.Printf("%v\n", newMap1)
}
func flattenMap(m Data) Data {
d := make(Data)
for k, v := range m {
v1, ok := v.(Data)
if ok {
flatMap(d, v1, k)
} else {
d[k] = v
}
}
return d
}
func flatMap(d, m Data, oldKey string) {
for k, v := range m {
v1, ok := v.(Data)
if ok {
flatMap(d, v1, oldKey+"."+k)
} else {
d[oldKey+"."+k] = v
}
}
}