使用 connect.urlencoded() 解析嵌套数组

问题描述 投票:0回答:1

我有一个通常提交到 Spring MVC 应用程序的 Web 应用程序。发布的表单数据看起来像这样:

formBean[0].id="100"
formBean[0].name="Bill"
formBean[1].id="101"
formBean[1].name="Steve"

出于测试/开发目的,我想将相同的表单提交到运行express(版本4)的节点服务器。连接bodyParser,配置如下:

app.use(bodyParser.urlencoded({ extended: true }));

无法正确解析表单数据。将 req.body 转储到控制台会导致:

{ formBean: [ '0', '1' ] }

当我更改表单字段名称时,我得到了预期的结果,以便提交的数据如下所示:

formBean[0][id]="100"
formBean[0][name]="Bill"
formBean[1][id]="101"
formBean[1][name]="Steve"

但是,不幸的是,这不适用于我们的 Spring MVC 应用程序。

有没有办法配置 connect.urlencoded 以正确解析我提交的表单数据?我应该看看有什么不同的中间件吗?

express multidimensional-array node.js-connect
1个回答
0
投票

尝试

{扩展:假}

这强制在 Node 库中使用本机 queryString 模块

req.body 应该有 => {"id":["100","101"],"name":["Bill","Steve"]}

var bodyParser = require('body-parser');
var parseUrlencoded = bodyParser.urlencoded({extended: false}); //force the use of native queryString module in Node library
app.post(parseUrlencoded, function (request, response) {
    console.log('request.body ' + JSON.stringify(request.body));
    .....
});
© www.soinside.com 2019 - 2024. All rights reserved.