我收到的 URL 如下所示:
/controller/action?columns[0][data]=foo&columns[1][data]=bar&columns[2][data]=bar&columns[3][data]=bar&columns[4][data]=bar
所以我有一个对象数组。我怎样才能把它解析成一片结构?
我的控制器动作是这样的:
func (this *MyController) Foo() {
type column struct{
Data string
}
columns := []column{}
if err := this.Ctx.Input.Bind(&columns, "columns"); err != nil {
log.Fatal(err)
} else {
log.Println("OK, got:", columns)
}
}
这个的输出是:
OK, got: [{} {} {} {} {} {}]
绑定成功检测到有五列但无法映射data
字段。我对此进行了实验,并认为存在两个问题:
绑定似乎只支持文档中显示的确切语法:
?id=123&isok=true&ft=1.2&ol[0]=1&ol[1]=2&ul[]=str&ul[]=array&user.Name=astaxie
user.Name=astaxie
有效而user[Name]=astaxie
无效。
第二个问题是 的小写data
。我的实验表明user.Name
有效,user.name
但没有。
所以数据绑定方法希望我在有的时候获取表单中的columns[0].Data=foo
参数columns[0][data]=foo
第一个确实有效。但我无法控制 URL,我必须按原样接受它,data
方括号中的小写字母。该请求由DataTables生成。