Convertir une liste d'objets (JSON) en CSV avec JavaScript
Concept et utilisation
La fonction arrayObjectsToSV() permet de convertir une liste d'objets (JSON) au format CSV.
Il est possible de définir le jeu de données ainsi que les séparateurs de données.
Fonction
arrayObjectsToSV()Retourne des données en format CSV à partir d'un tableau de données JSON.
- Syntaxe
arrayObjectsToSV(donnees, options);- Paramètres
donnees(JSON)Le paramètre
donneesde la fonctionarrayObjectsToSV()définit les données JSON à convertir en format CSV.Le format est défini avec une liste d'objets composés de clés pour les données entêtes et de valeurs pour les données en lignes.
options(Object)Le paramètre
optionsde la fonctionarrayObjectsToSV()définit les séparateurs de données.- Propriétés
lineDelimiter(String)La propriété
lineDelimiterdu paramètreoptionsdéfinit les séparateur de lignes.
Si cette propriété est omise, la valeur par défaut "\n" sera utilisée.columnDelimiter(StringLa propriété
columnDelimiterdu paramètreoptionsdéfinit les séparateur de colonnes.
Si cette propriété est omise, la valeur par défaut ";" sera utilisée.columnQuote(String)La propriété
columnQuotedu paramètreoptionsdéfinit les caractères de citation à ajouter avant et après une valeur contenant les caractères utilisés pour les séparateurs.
Si cette propriété est omise, la valeur par défaut "'" sera utilisée.
Exemple de conversion de données JSON en format CSV
var donnees = [
{
"Entête 1": "Valeur 1",
"Entête 2": "Valeur 2"
},
{
"Entête 1": "Valeur 3",
"Entête 2": "Valeur 4"
}
];
var options = {
lineDelimiter: '\n',
columnDelimiter: ';',
columnQuote: "'"
};
arrayObjectsToSV(donnees, options);
// renvoie : "Entête 1;Entête 2
// Valeur 1;Valeur 2
// Valeur 3;Valeur 4"Code source de la fonction
function arrayObjectsToSV(a, b) {
b = b || {};
var c = a.length,
d = b.columnDelimiter || ';',
e = b.lineDelimiter || 'n',
f = b.columnQuote || "'",
g = [];
for (var i = 0; i < c; i++) {
for (var k in a[i]) {
if (g.indexOf(k) === -1) {
g.push(k);
}
}
}
h = g.length,
i = [],
j = function(v) {
return v ? (v.indexOf(d) > -1 || v.indexOf(e) > -1) ? f + v + f : v : '';
};
for (var k = 0; k < h; k++) {
i[k] = j(g[k]);
}
var s = i.join(d) + e;
for (var k = 0; k < c; k++) {
var r = a[k];
for (var l = 0; l < h; l++) {
if (l > 0) {
s += d;
}
s += j(r[g[l]]);
}
if (k < c) {
s += e;
}
}
return s;
}Dernière mise à jour le .
