1 Star 0 Fork 0

笑看风云/gocodes

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
AnyToMap.go 1.09 KB
一键复制 编辑 原始数据 按行查看 历史
笑看风云 提交于 2022-02-11 22:43 +08:00 . 项目
package coderx
import (
"fmt"
"gitee.com/zhongguo168a/gocodes/datax"
"gitee.com/zhongguo168a/gocodes/datax/jsonmap"
"gitee.com/zhongguo168a/gocodes/datax/reflectx"
"gitee.com/zhongguo168a/gocodes/datax/schemax"
"gitee.com/zhongguo168a/gocodes/myx/errorx"
)
func AnyToMap(document interface{}) (map[string]interface{}, error) {
switch d := document.(type) {
case map[string]interface{}:
return d, nil
case reflectx.IRefObject:
schema := schemax.GetDeclByKey(d.RefType())
m := map[string]interface{}{}
if schema == nil {
err := jsonmap.StructToMap(d, m)
if err != nil {
err = errorx.Wrap(err, fmt.Sprintf("jsonmap.StructToMap"), datax.M{"document": document})
return nil, err
}
} else {
err := NewRefToMap().SetSource(d).Write(m)
if err != nil {
err = errorx.Wrap(err, "MapToRef.Write")
return nil, err
}
}
return m, nil
default:
m := map[string]interface{}{}
err := jsonmap.StructToMap(d, m)
if err != nil {
err = errorx.Wrap(err, fmt.Sprintf("jsonmap.StructToMap"), datax.M{"document": document})
return nil, err
}
return m, nil
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/zhongguo168a/gocodes.git
git@gitee.com:zhongguo168a/gocodes.git
zhongguo168a
gocodes
gocodes
4da1013f7e88

搜索帮助