65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
)
|
|
|
|
//ToBsonM 将struct转换为 Bson Map
|
|
func ToBsonM(s interface{}) (bson.M, error) {
|
|
data, err := bson.Marshal(s)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
m := make(bson.M)
|
|
if err := bson.Unmarshal(data, &m); err != nil {
|
|
return nil, err
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
// 将page转换为数据库的skip、limit
|
|
func ToDBPage(pageNum int64, pageSize int64) (skip int64, limit int64) {
|
|
return (pageNum - 1) * pageSize, pageSize
|
|
}
|
|
|
|
//JSONStruct2Map 将struct转换为Map
|
|
func JSONStruct2Map(obj interface{}) (map[string]interface{}, error) {
|
|
m := make(map[string]interface{})
|
|
j, err := json.Marshal(obj)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err := json.Unmarshal(j, &m); err != nil {
|
|
return nil, err
|
|
}
|
|
return m, err
|
|
}
|
|
|
|
//Map2JSONStruct 将map转换为Json struct
|
|
func Map2JSONStruct(v interface{}, m map[string]interface{}) error {
|
|
j, err := json.Marshal(m)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := json.Unmarshal(j, v); err != nil {
|
|
return err
|
|
}
|
|
return err
|
|
}
|
|
|
|
// struct转换为Map
|
|
func Struct2Map(obj interface{}) map[string]interface{} {
|
|
m := make(map[string]interface{})
|
|
b, err := json.Marshal(obj)
|
|
if err != nil {
|
|
return m
|
|
}
|
|
if err = json.Unmarshal(b, &m); err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
return m
|
|
}
|