Go结构体转map
func StructToMap(stc interface{}) map[string]interface{} {
newMap := make(map[string]interface{})
t := reflect.TypeOf(stc)
v := reflect.ValueOf(stc)
fields := t.NumField()
for i := 0; i < fields; i++ {
key := t.Field(i).Name
// 解析注解key
if t.Field(i).Tag.Get("json") != "" {
key = t.Field(i).Tag.Get("json")
}
// 解析结构体类型
if v.Field(i).Kind() == reflect.Struct {
newMap[key] = StructToMap(v.Field(i).Interface())
continue
}
// 解析指针类型
if v.Field(i).Kind() == reflect.Ptr {
newMap[key] = StructToMap(v.Field(i).Elem().Interface())
continue
}
// 解析基本类型
newMap[key] = v.Field(i).Interface()
}
return newMap
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 30%!