Node.js 如何通过使用节点js读取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":

我有一个JSON,如下所示:

{
    "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。