我想在服务器上实现从JSON到CSV的格式,但是由于逗号是我的分隔符,因此我面临包含逗号的条目的问题。
这导致某些内容不在相应的列中。
当逗号位于条目中时,如何跳过逗号,
谢谢
function convertArrayOfObjectsToCSV(args) {
var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = args.data || null;
if (data == null || !data.length) {
return null;
}
columnDelimiter = args.columnDelimiter || ',';
lineDelimiter = args.lineDelimiter || '\n';
keys = Object.keys(data[0]);
result = '';
result += keys.join(columnDelimiter);
result += lineDelimiter;
data.forEach(function (item) {
ctr = 0;
keys.forEach(function (key) {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr++;
});
result += lineDelimiter;
});
return result;
}
function downloadCSV(args) {
var data, filename, link;
var csv = convertArrayOfObjectsToCSV({
data: activitesExport
});
if (csv == null) {
console.log("CSV null");
return;
}
filename = args.filename || 'export.csv';
if (!csv.match(/^data:text\/csv/i)) {
csv = 'data:text/csv;charset=utf-8,' + csv;
}
data = encodeURI(csv);
link = document.createElement('a');
link.setAttribute('href', data);
link.setAttribute('download', filename);
link.click();
}
有关我的数据的示例:
{
"-LSKp07UQ7TAEXYxK6Li" : {
"activiteId" : "-LSKp07UQ7TAEXYxK6Li",
"adresseCodePostal" : "38340",
"adresseVille" : "VOREPPE",
"adresseVoie" : " 517 rue de Nardan",
"ageMaximum" : "",
"ageMinimum" : "",
"categorie" : "CULTURE",
"description" : "l’Arrosoir est un équipement destiné à accueillir de nombreux événements festifs et culturels tout au long de l’année.",
"divers" : "",
"horaires" : "Horaires divers en fonction des événements",
"illustration" : "https://firebasestorage.googleapis.com/",
"indoor" : true,
"latitude" : 45.2916646,
"longitude" : 5.6349276,
"nom" : "L’arrosoir",
"outdoor" : false,
"siteWeb" : "",
"tarifs" : "En fonction de la manifestation",
"telephone" : "0476504747"
},
"-LSKpWYf9fPaBjtU578e" : {
"activiteId" : "-LSKpWYf9fPaBjtU578e",
"adresseCodePostal" : "38340",
"adresseVille" : "VOREPPE",
"adresseVoie" : "Rue Jean Achard,",
"ageMaximum" : "",
"ageMinimum" : "",
"categorie" : "LOISIRS",
"description" : "Deux terrains de 4 jeux pour la boule lyonnaise ou la pétanque.",
"divers" : "",
"horaires" : "Accès libre ",
"illustration" : "https://firebasestorage.googleapis.com/",
"indoor" : false,
"latitude" : 45.296335,
"longitude" : 5.6363899,
"nom" : "Gradins de la verronière",
"outdoor" : true,
"siteWeb" : "https://www.voreppe.fr/article/terrains-de-boule",
"tarifs" : "gratuit",
"telephone" : "0476504747"
}
}
答案 0 :(得分:0)
我不得不对大数据文本行做一些非常相似的事情 我建议使用这个库 https://www.npmjs.com/package/csv-stringify
这是我编写的使用csv-stringify从“脏”数组创建CSV的函数
export const convertToCSV = (output: string[][]) => {
return new Promise ((resolve,fail) => {
stringify(output, (err, outputData) => {
if (!err) {
resolve(outputData as string[][]);
} else {
fail(err);
}
});
})
}