1 回答
TA贡献1895条经验 获得超3个赞
有两个问题:
您没有正确指定表单输入名称,您拥有它们的方式永远无法映射到您想要的任何语言。在支持您想要的语言中,它将标签映射到两个字段(名称和计数)的结构,每个字段由一个数组组成。不是名称和计数结构的数组。名称应该是这样的
tags[][name]
,以实现你想要的。即使您按照上述正确指定了名称,它也不会在 Echo 中工作,因为它依赖于
http.Request.Form
解析值,这实际上url.Values
只是一个map[string][]string
. 如您所见,这不可能捕获您想要的结构。
现在,仅仅因为 Echo 不支持开箱即用,并不意味着您不能这样做。您可以使用具有所需功能的第三方库进行绑定,
以下代码:
package main
import (
"fmt"
"net/url"
"github.com/monoculum/formam"
)
type User struct {
Email,
Password string
Tags []struct {
Tag string
Count int
}
}
func main() {
formData := "Email=joe@example.com&Password=secret&Tags[0].Tag=red&" +
"Tags[0].Count=1&Tags[1].Tag=blue"
q, _ := url.ParseQuery(formData)
u := new(User)
dec := formam.NewDecoder(nil)
if err := dec.Decode(q, u); err != nil {
fmt.Println(err)
return
}
fmt.Println(u)
}
结果是你需要的:
&{joe@example.com secret [{red 1} {blue 0}]}
希望这可以帮助!
- 1 回答
- 0 关注
- 149 浏览
添加回答
举报