首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QueryInterface map[string]接口{}转换回xorm定义的结构?

如何将QueryInterface map[string]接口{}转换回xorm定义的结构?
EN

Stack Overflow用户
提问于 2022-11-15 22:51:46
回答 1查看 18关注 0票数 2

我有一个数据库查询,它返回一个额外的计算列以及所有映射的结构列。我希望将它映射回结构中,同时也能够提取不属于结构的计算列。我可以通过使用xorm QueryInterface()函数获得一切,但我似乎找不到如何将结果的map[string]interface{}转换回结构.

有什么想法吗?我看到gorm有db.Model(...).Create(...),但似乎无法在xorm中找到相应的内容。

EN

回答 1

Stack Overflow用户

发布于 2022-11-16 18:38:53

嗯,我找到了一个解决办法,虽然不是一个优雅的,我希望有更好的,所以如果别人有一个好的答案.

基本上,我只是决定使用JSON,然后使用Unmarshal来获取map[string]interface{}并将其转换回结构。这意味着我必须在结构上使用一组json:"..."标记,因为列->属性映射不同于xorm使用的映射。有点难看,但它允许我从数据库查询中捕获额外的道具。

代码语言:javascript
复制
type MyStruct struct {
    ID                   int64              `xorm:"primaryKey"`
    ProductID            int64              `xorm:"INDEX" json:"product_id"`
    Index                int64              `xorm:"INDEX NOT NULL DEFAULT 0"`
    Code                 string             `xorm:"-" json:"code"`
}

func (b *MyDBStruct) FromMap(src map[string]interface{}) error {
    jsonStr, _ := json.Marshal(src)
    err := json.Unmarshal(jsonStr, &b)
    if err == nil {
        for key := range src {
            b.AfterSet(key, nil)
        }
    }
    return err
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74453134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档