use*_*896 29 javascript csv arrays json
我试图将javascript对象集转换为csv格式
如果你把它放在在线JSON解析器http://json.parser.online.fr/你可以得到我的Javascript对象的想法
这就是我试图解决的问题......但它失败了...... http://jsfiddle.net/fHQzC/11/
我试图将对应于值"term"和相应标题的整个值取为csv格式
预期的输出就像
Time,Dec 9, 2012
News,Germany,election, Egypt,Revolution, Japan, Earthquake
Person,Obama, Beckham
Title,Pearce Snubs Beckham
Time,Dec 5, Birthday
Person, Lebron James
News,Italy,Euro 2012 Final
Title-Heats National Champions
Run Code Online (Sandbox Code Playgroud)
Title-Heats全国冠军
是否可以在excel表中下载csv文件,我在堆栈中找到的那个文件真的很有用......
Hem*_*lia 23
你可以尝试
$(document).ready(function () {
// Create Object
var items = [
{ name: "Item 1", color: "Green", size: "X-Large" },
{ name: "Item 2", color: "Green", size: "X-Large" },
{ name: "Item 3", color: "Green", size: "X-Large" }];
// Convert Object to JSON
var jsonObject = JSON.stringify(items);
// Display JSON
$('#json').text(jsonObject);
// Convert JSON to CSV & Display CSV
$('#csv').text(ConvertToCSV(jsonObject));
});
Run Code Online (Sandbox Code Playgroud)
和一个函数ConvertToCSV
// JSON to CSV Converter
function ConvertToCSV(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
var str = '';
for (var i = 0; i < array.length; i++) {
var line = '';
for (var index in array[i]) {
if (line != '') line += ','
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
Run Code Online (Sandbox Code Playgroud)
mig*_*uno 20
可能更优雅和最简单的解决方案
function convertToCSV(arr) {
const array = [Object.keys(arr[0])].concat(arr)
return array.map(it => {
return Object.values(it).toString()
}).join('\n')
}
console.log(
convertToCSV(
[
{
id: 1,
name: 'Foo',
timestamp: new Date()
},
{
id: 2,
name: 'Bar',
timestamp: new Date()
},
{
id: 3,
name: 'Baz',
timestamp: new Date()
}
]
)
)Run Code Online (Sandbox Code Playgroud)
Ees*_*esa 14
这是我的解决方案
function arrayToCSV(objArray) {
const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;
let str = `${Object.keys(array[0]).map(value => `"${value}"`).join(",")}` + '\r\n';
return array.reduce((str, next) => {
str += `${Object.values(next).map(value => `"${value}"`).join(",")}` + '\r\n';
return str;
}, str);
}
Run Code Online (Sandbox Code Playgroud)
例:
let arr = [{name: "Essa", age: 25}];
console.log(arrayToCSV(arr));
Run Code Online (Sandbox Code Playgroud)
Anu*_*ale 10
下面的代码将 JSON 数组转换并下载为 csv 文件。
function exportJSONToCSV(objArray) {
var arr = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;
var str =
`${Object.keys(arr[0])
.map((value) => `"${value}"`)
.join(',')}` + '\r\n';
var csvContent = arr.reduce((st, next) => {
st +=
`${Object.values(next)
.map((value) => `"${value}"`)
.join(',')}` + '\r\n';
return st;
}, str);
var element = document.createElement('a');
element.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvContent);
element.target = '_blank';
element.download = 'export.csv';
element.click();
}
Run Code Online (Sandbox Code Playgroud)
小智 8
这是一个类似于mightybruno's answer的解决方案,它处理包含逗号的字符串。其他答案似乎都没有考虑到这一点。
function objectsToCSV(arr) {
const array = [Object.keys(arr[0])].concat(arr)
return array.map(row => {
return Object.values(row).map(value => {
return typeof value === 'string' ? JSON.stringify(value) : value
}).toString()
}).join('\n')
}
Run Code Online (Sandbox Code Playgroud)