Node.js 如何通过使用节点js读取JSON来创建逗号分隔的值
我有一个JSON,如下所示:Node.js 如何通过使用节点js读取JSON来创建逗号分隔的值,node.js,Node.js,我有一个JSON,如下所示: { "workloadId": "68cf9344-5a3c-4e4a-927c-c1c9b6e48ccc", "elements": [ { "name": "element1", "uri": "vm/hpcloud/nova/large" }, { "name": "element2", "uri":
{
"workloadId": "68cf9344-5a3c-4e4a-927c-c1c9b6e48ccc",
"elements": [
{
"name": "element1",
"uri": "vm/hpcloud/nova/large"
},
{
"name": "element2",
"uri": "vm/hpcloud/nova/small"
}
],
"workloadStatus": "none"
}
我需要得到逗号分隔的字符串,如下所示:
元素1,元素2
当我尝试如下所示时,我得到了空字符串:
app.post('/pricingdetails', function(req, res) {
var workload = req.body;
var arr = new Array();
for(var index in workload.elements)
{
arr[index] = workload.elements[index].uri;
}
console.log(arr.join(","));
}
元素是一个数组。切勿将for/in用于阵列。请改用循环标准:
for(var i = 0; i < workload.elements.length; ++i) {
arr.push(workload.elements[i].uri);
}
console.log(arr.join(','));
for(变量i=0;i
节点将允许您使用forEach
方法,而不是for
循环或for/in
(后者有可能)。
避免使用newarray()
是,但我也发现[]
符号更简洁易读
var workload = req.body;
var arr = [];
workload.elements.forEach(function(el) {
arr.push(el.uri);
});
console.log(arr.join(','));
把这些琐碎的事情放在一边,比如dc5,我试着用JSON定义一个变量,而你的代码做了我所期望的(返回由逗号连接的数组元素)。您使用什么来调用该路由,以及如何将指定的JSON传递给它
编辑:使用
curl -v -H "Content-type: application/json" -X POST -d '{"workloadId": "68cf9344-5a3c-4e4a-927c-c1c9b6e48ccc", "elements": [{"name": "element1", "uri": "vm/hpcloud/nova/large"}, {"name": "element2", "uri": "vm/hpcloud/nova/small"} ], "workloadStatus": "none"}' http://localhost:3000/pricingdetails
如果不使用,则对我失败。使用app.use(express.bodyParser())在我的代码中,它按预期工作。您可以在循环中的每一行之后使用console.log arr[index]。乍一看似乎没有错,只是工作负载可能不是一个json对象,而是一个字符串本身?将上面列出的json直接分配给工作负载可以正常工作。看起来错误可能在分配中。尝试将响应分配给workload,而不是workload=req.body。