我收到的网址如下:
/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
字段。我试验过这个并且相信有两个问题:
绑定似乎只支持documentation中显示的确切语法:
?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生成。