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
}