我有一个回调,我在打印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)
答案 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;
}