将数组转换成json

我有一个callback,当我打印row得到下面的console output

 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) 

假设你已经连续调用每次都在生成行的callback() ,你可以收集你需要的行,把它们中的每一个parsing成一个"key": "value"对,把它添加到目的。 然后,您可以使用JSON.stringify()方法将您的对象转换为有效的JSONstring。

根据您提供的代码,这是一个可行的解决scheme:

 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"} 

你可以使用JSON.stringify(yourArray)?

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

这里有一个简化的方法来帮助翻译数组(数组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; }