为了账号安全,请及时绑定邮箱和手机立即绑定

我如何使用 nodejs 在服务器上接收与客户端发布数据格式相同的发布数据?

我如何使用 nodejs 在服务器上接收与客户端发布数据格式相同的发布数据?

慕的地10843 2021-09-17 17:20:51
我有以下格式的帖子数据{"geoJSON":{"type":"Feature","geometry":{"type":"LineString","coordinates":[[-102.038635,36.800488],[-94.567716,36.800488],[-96.149793,43.381098],[-104.060178,43.508721]]}}}在服务器上期望相同的格式,但收到以下格式{"geoJSON":{"type":"Feature","geometry":{"type":"LineString","coordinates":[["-102.038635","36.800488"],["-94.567716","36.800488"],["-96.149793","43.381098"],["-104.060178","43.508721"]]}}}您可以看到coordinates属性的差异。双引号被添加到服务器接收coordinates数组中的每个值。如何获得coordinates与客户端发布数据相同的数组?我的应用程序配置了 expressJS 并使用了 body-parser。解决问题所需的任何其他设置?app.use(bodyParser.urlencoded({ limit: '50mb' }));app.use(bodyParser.json({ limit: '50mb' }));提前致谢。
查看完整描述

3 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

假设我有


var payload = {"geoJSON":{"type":"Feature","geometry":{"type":"LineString","coordinates":[[-102.038635,36.800488],[-94.567716,36.800488],[-96.149793,43.381098],[-104.060178,43.508721]]}}}

在发送服务器之前使用 JSON.stringify(payload) 将其字符串化。


payload = JSON.stringify(payload)

// after this code then sending payload to server

在服务器中使用 JSON.parse(payload) 来使用这个


// server nodejs

var receivedContent = JSON.parse(payload)

// then you can using receivedContent with format you want


查看完整回答
反对 回复 2021-09-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

首先,HTTP 将所有内容都理解为字符串,因此将所有内容都转换为字符串。由您来解析它使用Number.parseInt


此外,它无关紧要,但 express 现在附带了它自己的正文解析器,您可以使用它。所以,而不是调用bodyParser.json,你只需调用express.json


编辑

根据评论所述,您可以有一个名为 parseCoordinates


function parseCoordinates(coordinates) {

     return coordinates.map(inner => {

         return Array.isArray(inner) ? inner.map(elem => parseFloat(elem)) : parseFloat(inner);

     });

}


查看完整回答
反对 回复 2021-09-17
?
温温酱

TA贡献1752条经验 获得超4个赞

{"geoJSON":{"type":"Feature","geometry":{"type":"LineString","coordinates":[[-102.038635,36.800488],[-94.567716,36.800488],[-96.149793,43.381098],[-104.060178,43.508721]]}}}

上面实际上是一个 JavaScript 对象。

{"geoJSON":{"type":"Feature","geometry":{"type":"LineString","coordinates":[["-102.038635","36.800488"],["-94.567716","36.800488"],["-96.149793","43.381098"],["-104.060178","43.508721"]]}}}

上面实际上是一个JSON。

正如所建议的答案之一,每当您向服务器发送数据时,有效负载中的所有内容都将自动转换为字符串。您应该将值转换为数字。

另外,我认为任何解析都无法做到这一点,您应该为此编写自己的代码。我这么说的原因是,解析器永远不会知道原始值是客户端发送的字符串还是实际上是一个数字,因为所有的键和值都将成为字符串。


查看完整回答
反对 回复 2021-09-17
  • 3 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号