Go语言中如何将MySQL查询结果List转换为自定义结构体切片?

go语言mysql查询结果转换为自定义结构体切片详解

本文介绍如何将Go语言中从MySQL数据库查询得到的列表数据转换为自定义结构体切片。假设数据库查询返回的数据类似于{id:1, username:’xx’, age:xx, frist_name:”a”},目标是将其转换为特定JSON格式,包含frist_name字段和一个包含用户信息的结构体切片lists。

为此,我们需要定义两个结构体:UserLists和myLists。UserLists存储用户信息(id, username, age),myLists包含frist_name和UserLists结构体切片lists。最终目标是将数据库查询结果转换为myLists结构体切片。

Go语言中如何将MySQL查询结果List转换为自定义结构体切片?

以下代码演示转换过程:

package mainimport (    "encoding/json"    "fmt")func main() {    // 模拟数据库查询结果,实际应用中需替换为数据库查询代码    rss := []string{        `{"id":1,"username":"xx","age":"xx","frist_name":"a"}`,        `{"id":2,"username":"xx","age":"xx","frist_name":"b"}`,        `{"id":3,"username":"xx","age":"xx","frist_name":"a"}`,    }    type r struct {        Id        uint64 `json:"id"`        Username  string `json:"username"`        Age       string `json:"age"`        FristName string `json:"frist_name"`    }    type UserLists struct {        Id       uint64 `json:"id"`        Username string `json:"username"`        Age      string `json:"age"`    }    type myLists struct {        FristName string      `json:"frist_name"`        Lists     []UserLists `json:"lists"`    }    var resp []myLists    // 使用map进行分组,提高效率    firstNameMap := make(map[string][]UserLists)    for _, rs := range rss {        var t r        err := json.Unmarshal([]byte(rs), &t)        if err != nil {            fmt.Println("Unmarshal error:", err)            return        }        tul := UserLists{Id: t.Id, Username: t.Username, Age: t.Age}        firstNameMap[t.FristName] = append(firstNameMap[t.FristName], tul)    }    for firstName, userList := range firstNameMap {        resp = append(resp, myLists{FristName: firstName, Lists: userList})    }    // 将结果转换为JSON格式输出    jsonData, err := json.MarshalIndent(resp, "", "  ")    if err != nil {        fmt.Println("Marshal error:", err)        return    }    fmt.Println(string(jsonData))}

登录后复制

代码首先模拟数据库查询结果,实际应用中需替换为数据库查询代码。然后,代码遍历模拟数据,使用json.Unmarshal将JSON字符串转换为r结构体,再将r结构体数据填充到UserLists结构体。最后,代码根据frist_name将UserLists结构体添加到对应的myLists结构体中。 最终结果resp是一个myLists结构体切片,包含所需数据结构。最后,代码使用json.MarshalIndent将结果转换为格式化的JSON字符串输出。 改进后的代码使用了map进行分组,避免了多次遍历,提高了代码效率。

立即学习“go语言免费学习笔记(深入)”;

以上就是Go语言中如何将MySQL查询结果List转换为自定义结构体切片?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2538172.html

(0)
上一篇 2025年3月6日 00:50:28
下一篇 2025年2月19日 21:18:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论