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 protected]&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)
}
結果是你需要的:
&{[email protected] secret [{red 1} {blue 0}]}
希望這可以幫助!
- 1 回答
- 0 關注
- 179 瀏覽
添加回答
舉報