1

我收到的 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生成。

4

0 回答 0