为了账号安全,请及时绑定邮箱和手机立即绑定

根据 url 查询参数创建嵌套结构

根据 url 查询参数创建嵌套结构

Go
小怪兽爱吃肉 2022-11-23 20:37:10
我的目标是从数据库中获取一些过滤记录。过滤基于依赖于另一个结构的结构:type Group struct {      ID          primitive.ObjectID      Name        string}type Role struct {    ID          primitive.ObjectID      Name        string                  Description string                  Groups      []*group.Group     }我从 URL 查询参数创建一个角色结构对象:var roleWP Roleif r.URL.Query().Has("name") {    name := r.URL.Query().Get("name")    roleWP.Name = name}if r.URL.Query().Has("description") {    description := r.URL.Query().Get("description")    roleWP.Description = description}if r.URL.Query().Has("groups") {   //How would look groups parameter?}结构的填充name和description字段Role非常简单。整个 url 将是:myhost/roles?name=rolename&description=roledescription但是如果我想为Group结构传递数据,url 会是什么样子呢?是否可以在查询参数中将数据作为 json 对象传递?另外,我想提到的那个groups字段Role是一个数组。我理想的虚拟 url 看起来像:myhost/roles?name=rolename&description=roledescription&groups={name:groupname1}&groups={name:groupname2}
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

遍历组,拆分:,创建组并附加到切片:


roleWP := Role{

    Name:        r.FormValue("name"),

    Description: r.FormValue("description"),

}

for _, g := range r.Form["groups"] {

    g = strings.TrimPrefix(g, "{")

    g = strings.TrimSuffix(g, "}")

    i := strings.Index(g, ":")

    if i < 0 {

        // handle error

    }

    roleWP.Groups = append(roleWP.Groups, &Group{g[:i], g[i+1:]})

}

以下是如何使用 JSON 而不是 OP 的理想格式:


roleWP := Role{

    Name:        r.FormValue("name"),

    Description: r.FormValue("description"),

}

for _, s := range r.Form["groups"] {

    var g Group

    err := json.Unmarshal([]byte(s), &v)

    if err != nil {

        // handle error

    }

    roleWP.Groups = append(roleWP.Groups, &g)

}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信