Expressjs - 将数组/括号字段解析为实数数组

时间:2012-09-02 17:26:10

标签: javascript node.js express

我想找到一些现有的中间件或一些方便的代码,用方括号(即'contact [21] [name]')将表单字段转换为ExpressJS 3的实数数组。

有些事情:

for(key in req.body){
    if(key.isArrayField()) {
       //add new array field to req.body and delete old string version from req.body
...

我想解析无限深度的括号。我还在学习JS / Node,所以会喜欢一些方向。

由于

3 个答案:

答案 0 :(得分:4)

您能否提供一些关于您想要实现的目标的澄清?

根据您首先从Web表单获取输入的方式,您可以使用内置的JSON.parse()(docs here)轻松地将JSON语法解析为实际对象(包括数组)的node.js

使用该方法可以拥有无​​限级别的嵌套值(哈希/对象和数组),但是您需要一些客户端脚本才能将值放在首位(例如jQuery) )。

如果你给出一个更全面的例子,包括提交表格的背景,我可能会给出更好的指示......

答案 1 :(得分:2)

根据我的经验,你可以简单地做这样的事情......

<强>玉

input(type="text" name="foo[]" value="foo1")
input(type="text" name="foo[]" value="foo2")

<强> JS

app.post('/test', function(req,res){
    console.log(req.body)// { foo: [ 'foo1', 'foo2' ] }
    console.log(req.body.foo)//["foo1","foo2"]
    console.log(req.body.foo[0])//foo1
    console.log(req.body.foo[1])//foo2
});

我不知道这是否有意义,但这就是你如何对待它们......至少在快递3.0 +

答案 2 :(得分:0)

我通过使用https://github.com/marioizquierdo/jquery.serializeJSON解决了这个问题 - 问题在于,如果我只提交一个POST表单来表示它不会将括号作为数组处理,那么它们必须手动复制。通过使用插件将表单解析为JSON,我可以通过ajax提交它。