Node.js、Express、jQuery.param() - 从 JSON 中删除引号

Posted

技术标签:

【中文标题】Node.js、Express、jQuery.param() - 从 JSON 中删除引号【英文标题】:Node.js, Express, jQuery.param() - Remove quotes from JSON 【发布时间】:2014-09-20 10:04:32 【问题描述】:

我正在使用 jQuery.param() 在客户端序列化一个 JSON 对象:

var test = "coordinates":[[-122.610168,37.598167],[-122.288818,37.598167],[-122.288818,37.845833],[-122.610168,37.845833],[-122.610168,37.598167]];

console.log($.param( test ));

发出 GET 请求后,在 Express 路由中的服务器端,我通过以下方式访问对象:

console.log('Server received: ' + JSON.stringify(req.query.coordinates));

这将输出以下内容 - 请注意每个坐标周围的引号:

Server received: [["-122.610168","37.598167"],["-122.288818","37.598167"],["-122.288818","37.845833"],["-122.610168","37.845833"],["-122.610168","37.598167"]]

如何删除引号?我可以解析为字符串并使用正则表达式,然后解析回 JSON,但这似乎效率低下。任何人都可以建议添加它们的过程的哪个部分以及如何删除它们?

【问题讨论】:

您可以像使用普通数组一样使用req.query.coordinates,在其上运行 for 并在其中的每个成员上运行 parseFloat。如果您不明白,我可以为您发布示例代码。 【参考方案1】:

像下面这样试试

var data = [["-122.610168","37.598167"],["-122.288818","37.598167"],["-122.288818","37.845833"],["-122.610168","37.845833"],["-122.610168","37.598167"]]

data.forEach(function(arr)
   arr[0] = +arr[0];
   arr[1] = +arr[1];
)

console.log(data)// prints[[-122.610168,37.598167],[-122.288818,37.598167],[-122.288818,37.845833],[-122.610168,37.845833],[-122.610168,37.598167]]

【讨论】:

【参考方案2】:

有些事情告诉我有一种方法可以使用 bind 在单个链式函数调用中执行此操作,但我能想到的最好方法是:

var coords = data.map(function(arr)return arr.map(parseFloat);)

这具有非破坏性的好处(原始data 变量保持不变)。

【讨论】:

以上是关于Node.js、Express、jQuery.param() - 从 JSON 中删除引号的主要内容,如果未能解决你的问题,请参考以下文章

Node.js + Express.js |尝试设置 HTTPS 服务器

Node js之Express初步介绍和安装

配置node.js中的express框架

我啥时候应该在独立的 node.js 上使用 express.js

Node.js Express框架 详细总结

初识 Express 丨Node.js