// Package wrapper ... // // Description : wrapper ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2023-08-10 15:01 package wrapper import ( "bytes" "encoding/json" "errors" "git.zhangdeman.cn/zhangdeman/easymap" "reflect" ) // EasyMap ... // // Author : go_developer@163.com<白茶清欢> // // Date : 15:02 2023/8/10 func EasyMap(mapData interface{}) Map { m, _ := EasyMapWithError(mapData) return m } // EasyMapWithError 转换map,并带上转换的异常 // // Author : go_developer@163.com<白茶清欢> // // Date : 15:06 2023/8/10 func EasyMapWithError(mapData interface{}) (Map, error) { if nil == mapData { return easymap.NewNormal(true), nil } m := easymap.NewNormal(true) reflectType := reflect.TypeOf(mapData) if reflectType.Kind() != reflect.Map { return m, errors.New("input data type is " + reflectType.String() + ", not map") } reflectValue := reflect.ValueOf(mapData).MapRange() for reflectValue.Next() { // 循环提取相关值 m.Set(reflectValue.Key().Interface(), reflectValue.Value().Interface()) } return m, nil } // EasyMapFromStruct 从struct转map // // Author : go_developer@163.com<白茶清欢> // // Date : 16:11 2023/8/10 func EasyMapFromStruct(data interface{}) Map { byteData, _ := json.Marshal(data) return EasyMapFromByte(byteData) } // EasyMapFromString 从string转为Map // // Author : go_developer@163.com<白茶清欢> // // Date : 16:12 2023/8/10 func EasyMapFromString(data string) Map { return EasyMapFromByte([]byte(data)) } // EasyMapFromByte 从字节数组转为Map // // Author : go_developer@163.com<白茶清欢> // // Date : 16:12 2023/8/10 func EasyMapFromByte(data []byte) Map { var tmpMap map[interface{}]interface{} decoder := json.NewDecoder(bytes.NewReader(data)) decoder.UseNumber() _ = decoder.Decode(&tmpMap) return EasyMap(tmpMap) } // Map ... // // Author : go_developer@163.com<白茶清欢> // // Date : 15:14 2023/8/10 type Map easymap.EasyMap