89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
// 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
|