把json摊平成二维的map,kv
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
}
作者:百里求一
出处:http://www.cnblogs.com/bergus/
我的语雀: https://www.yuque.com/barry.bai
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。