在 Go 中解析表单数组

我需要能够在我的 HTML 表单中做这样的事情:


<form method="POST">

    <input type="text" name="cart[items][1][qty]" value="3"/>

    <input type="text" name="cart[items][2][qty]" value="7"/>

    <input type="submit" value="Update cart"/>

</form>

问题是,如果我打印出来r.Form(当然是在 r.ParseForm() 之后!),就会发现 Go 将它解析为单独的字符串 - 而不是我所追求的嵌套层次结构。



更具体地说,当我这样做时r.Form["cart"],我希望获得整个嵌套的切片/地图,但这显然不是它的工作原理。我得到的值是[]。


使用模式是最好的解决方案,还是有可能完全实现我所追求的?如果那样,你会怎么做?:-)


眼眸繁星
浏览 289回答 1
1回答

慕森卡

这种语法实际上不是法理上的标准。当站点后端由 PHP 提供支持时,有时会使用它,但不是很频繁。我认为标准 Go 库没有理由支持它。从某种意义上说,本机解决方案存在于您拥有实现它的所有工具:字符串操作等。但是,现在没有必要实现它,因为您总是可以发送特定于任务的 JSON。即使你坚持创建它,它也不会像在 PHP 中那么简单,因为 Go 是类型化语言而 PHP 不是。并且访问这样的结构并不容易,因为您必须将其实现为map[string]interface{},这不是正确的 Go 方式(顺便说一句,Go 方式是类型化数据结构)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go