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 服务器