【发布时间】:2013-10-24 15:47:38
【问题描述】:
我有一个内置于 node.js 和“连接”的 http 服务器。 Web 服务当前将 JSON 请求解析为对象,执行“处理”并返回同步响应。 JSON 来自电子商务购物车,我最终得到了一个看起来像(精简版)的对象:
var myObj = {"request":{"industry":"social","transactionId":"gdfs23s","billing": {"addressLine1":"911 Fallen Street","addressLine2":"1 2"},"shipping":{"addressLine1":"1523 Willow Tree LAne","addressLine2":"unit 15"}}}
我想清理数据,执行一些任务,例如去除多余的空白,规范化邮政缩写,即街道到 st 等。
我编写了一系列成功实现清理/规范化的正则表达式。
但是我不确定如何有效地执行此操作并将这些清理过程优雅地应用于 JS /Node.js 中的对象。我会遇到想用相同的正则表达式模式清理 request.billing.addressLine1、request.shipping.addressLine1 的场景
我当然可以这样做: var addressCleaner= new RegExp("(str| street| strt)","g"); myObj.request.billing.addressLine1.replace(addressCleaner, "st"); myObj.request.shipping.addressLine1.replace(addressCleaner, "st");
但我不觉得这很干燥,而且它不是很“节点”地完成。
有什么建议或示例方法吗?我想避免使用 Mongoose 等包来执行此操作,因为我正在执行的规范化类型不仅包括确保字符串是字符串等。
提前致谢。
【问题讨论】:
-
您可以使用 JSON.parse 的第二个参数将您的数据恢复为干净的格式。由于该函数涉及每个属性和值,因此无需指定深度路径和循环。您可以使用 switch() 根据值或键有选择地修复数据...
-
@dandavis:他已经解析了 JSON 并且已经有了一个对象。阅读问题。
标签: javascript regex json performance node.js