将数组转换为json

时间:2015-04-15 21:10:08

标签: javascript json node.js

我有一个回调,我在打印console output时获得以下row

output of row [ 'Name', 'Language' ]
output of row [ 'English', 'Fr' ]
output of row [ 'German', 'Gr' ]
output of row [ 'France', 'London' ]

我想将上面的数组单独转换为有效的json 排除第一个,就像这样。

{
  "English" : "Fr",
  "German" : "Gr",
  "France" : "London"
}

  .on('record', function(row, index){      
      console.log("output of row", row);
      var obj = {};
        row.forEach(function(column, index) {
          obj[row[index].trim()] = row[index].trim();
        })
        record.push(obj);
      }
    })

附加代码

我正在获取csv数据,我每次将其推入。下面是我每次阅读csv数据时获得的CSV数据和数组......

Language,Name
Fr,English
Gr,German
London,France

output of row [ 'Name', 'Language' ]
output of row [ 'English', 'Fr' ]
output of row [ 'German', 'Gr' ]
output of row [ 'France', 'London' ]

  cvcsv()
    .from.string(csv)
    .transform( function(row){
      row.unshift(row.pop());
      return row;
    })
    .on('record', function(row, index){
      console.log("output of row",row)

3 个答案:

答案 0 :(得分:2)

假设您在每次生成行的callback()的连续调用中获取数组,您可以收集所需的行,将每个行解析为"key": "value"对,将其添加到对象。然后,您可以使用JSON.stringify()方法将对象转换为有效的JSON字符串。

根据您提供的代码,这是一个有效的解决方案:

var rows = {};

cvcsv().from.string(csv).transform(function(row){
    row.unshift(row.pop());
    return row;
}).on('record', function(row, index){    
    if (index > 0) rows[row[0]] = row[1];
});

jsonRows = JSON.stringify(rows);

// Log to the console to check
console.log(jsonRows);

结果将是这样的:

{"English" : "Fr", "German" : "Gr", "France" : "London"}

答案 1 :(得分:1)

你能使用JSON.stringify(yourArray)吗?

您可以使用shift从数组中删除第一个元素: yourArray.shift();

答案 2 :(得分:1)

这是一个帮助翻译数组(大小为2)的简化方法

function addToObject(object, row, keyIndex, valueIndex) {
    object[row[keyIndex]] = row[valueIndex];
}

function test() {
    var data = [[ 'Name', 'Language' ],
                [ 'English', 'Fr' ],
                [ 'German', 'Gr' ],
                [ 'France', 'London' ]];
    var obj = {};

    for(var i = 1; i < data.length; i++)
        // NOTE data[i] can come from any place
        addToObject(obj, data[i], 0, 1);

    return obj;
}