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
donnees
de 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
options
de la fonctionarrayObjectsToSV()
définit les séparateurs de données.- Propriétés
lineDelimiter
(String)La propriété
lineDelimiter
du paramètreoptions
dé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é
columnDelimiter
du paramètreoptions
dé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é
columnQuote
du paramètreoptions
dé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 .