Json数组arrays

我正在循环将数组的数组转换为对象,我分裂使用逗号“,”但如果我的值有一些逗号它也正在分裂。 例如:如果我的价值有一个date2017年5月2日,它实际上是一个单一的价值,但它是分裂为5月2日为一个值和2017年作为另一个值,所以,我的整个对象得到改变。

我正在阅读Excel表格。 我的输出是数组的数组。 我需要将其转换为json对象。

var xls = require('excel'); describe('TransactionDetails-Excel', function () { it('External Type G Tranasaction Details validation', function (done) { xls('transactions.xlsx', function(err, data) { if(err){ throw err; } else{ console.log(data); console.log(JSON.stringify(convertToJSON(data))); done(); } }); function convertToJSON(array) { var first = array[0].join(); var headers = first.split(','); var jsonData = []; for ( var iterator_i = 1, length = array.length; iterator_i < length; iterator_i++ ){ var myRow = array[iterator_i].join(); var row = myRow.split(','); var data = {}; for ( var x = 0; x < row.length; x++ ){ data[headers[x]] = row[x]; } jsonData.push(data); } return jsonData; } }); }); 

Excel工作表:transactions.xlsx 点击这里查看Excel工作表的截图

输出: 数据

 [ [ 'Transaction Id', 'Paid ', 'Time Created' ], [ '0YC0', 'Joe\'s Generic Business \nperson@gmail.com', 'Mar 2, 2012 14:28:36 PST' ], [ '8uyhr', 'mail@gmail.com', 'May 2, 2015 15:20:20 PST' ], [ '786YUH', 'mailtome@gmail.com', 'May 18, 2017 13:20:30 PST' ] ] 

输出://这是我得到的

 [{"Transaction Id":"0YC0","Paid ":"Joe's Generic Business \nperson@gmail.com","Time Created":"Mar 2","undefined":" 2012 14:28:36 PST"}, {"Transaction Id":"8uyhr","Paid ":"mail@gmail.com","Time Created":"May 2","undefined":" 2015 15:20:20 PST"}, {"Transaction Id":"786YUH","Paid ":"mailtome@gmail.com","Time Created":"May 18","undefined":" 2017 13:20:30 PST"}] 

但最终的对象应该是:

 [{"Transaction Id":"0YC0","Paid ":"Joe's Generic Business \nperson@gmail.com","Time Created":"Mar 2, 2012 14:28:36 PST"}, {"Transaction Id":"8uyhr","Paid ":"mail@gmail.com","Time Created":"May 2, 2015 15:20:20 PST"}, {"Transaction Id":"786YUH","Paid ":"mailtome@gmail.com","Time Created":"May 18, 2017 13:20:30 PST"}] 

提前致谢。

使用此functioninsted

 function convertToJSON(array) { var objArray = []; for (var i = 1; i < array.length; i++) { objArray[i - 1] = {}; for (var k = 0; k < array[0].length && k < array[i].length; k++) { var key = array[0][k]; objArray[i - 1][key] = array[i][k] } } return objArray; } 

您可以通过拆分标签和数据轻松完成以下操作:

 var labels = data[0] var output = data.slice(1).map(item => item.reduce((obj, val, index) => { obj[labels[index]] = val return obj }, {})) 

这是通过map数组中的每个项目到一个新的数组。 每个项目都经历一次reduce ,将数据值转换为具有正确键的对象。

在这里拨弄

join一些自定义值,然后拆分

用这个replace

 var myRow = array[iterator_i].join(';'); var row = myRow.split(';'); 

你也可以试试这个

 let keys = array.shift(); let arrayofObjects = array.map(subArray => _.object(keys,subArray)); console.log(arrayofObjects);