根据 url 查询参数创建嵌套结构
Create nested struct based on url query parameters
我的目标是从数据库中获取一些过滤记录。过滤基于依赖于另一个结构的结构:
type Group struct {
ID primitive.ObjectID
Name string
}
type Role struct {
ID primitive.ObjectID
Name string
Description string
Groups []*group.Group
}
我根据 URL 个查询参数创建了一个角色结构对象:
var roleWP Role
if 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?
}
填充 Role
结构的 name
和 description
字段非常简单。整个 url 将是:
myhost/roles?name=rolename&description=roledescription
但是,如果我想为 Group
结构传递数据, url 会是什么样子呢?是否可以在查询参数中将数据作为 json 对象传递?另外,我想提一下 Role
中的 groups
字段是一个数组。我理想的假人 url 看起来像:myhost/roles?name=rolename&description=roledescription&groups={name:groupname1}&groups={name:groupname2}
遍历组,拆分:,创建组并附加到切片:
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)
}
我的目标是从数据库中获取一些过滤记录。过滤基于依赖于另一个结构的结构:
type Group struct {
ID primitive.ObjectID
Name string
}
type Role struct {
ID primitive.ObjectID
Name string
Description string
Groups []*group.Group
}
我根据 URL 个查询参数创建了一个角色结构对象:
var roleWP Role
if 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?
}
填充 Role
结构的 name
和 description
字段非常简单。整个 url 将是:
myhost/roles?name=rolename&description=roledescription
但是,如果我想为 Group
结构传递数据, url 会是什么样子呢?是否可以在查询参数中将数据作为 json 对象传递?另外,我想提一下 Role
中的 groups
字段是一个数组。我理想的假人 url 看起来像:myhost/roles?name=rolename&description=roledescription&groups={name:groupname1}&groups={name:groupname2}
遍历组,拆分:,创建组并附加到切片:
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)
}