func json2KV(obj interface{}) map[string]interface{} {
var data = make(map[string]interface{})
rObj := reflect.ValueOf(obj)
switch rObj.Kind() {
case reflect.Map:
iter := rObj.MapRange()
for iter.Next() {
for k, v := range json2KV(iter.Value().Interface()) {
data[iter.Key().String()+"/"+k] = v
}
}
case reflect.Slice, reflect.Array:
for i := 0; i < rObj.Len(); i++ {
for k, v := range json2KV(rObj.Index(i).Interface()) {
data[fmt.Sprintf("[%d]/%s", i, k)] = v
}
}
default:
return map[string]interface{}{"": rObj.Interface()}
}
return data
}
相关文章: