Convertir un tableau de données JSON en CSV avec JavaScript

"arrayObjectsToSv" est une fonction JavaScript qui permet de convertir un tableau d'objects JSON au format CSV.

function arrayObjectsToSv(a, b) {
  var x = (b && b.columnDelimiter) ? b.columnDelimiter : ';',
      y = (b && b.lineDelimiter) ? b.lineDelimiter : 'n',
      k = Object.keys(a[0]),
      l = k.length,
      s = k.join(x) + y,
      i = 0, j = a.length, r;
  for (; i  < j; i++) {
    r = a[i];
    if (i > 0) {
      s += y;
    }
    for (var c = 0; c < l; c++) {
      if (c > 0) {
        s += x;
      }
      s += r[k[c]];
    }
  }
  return s;
}

La fonction prend en premier argument un tableau d'objets dont les clés serviront à créer les entêtes.

var data = [
  {
    "Entête 1": "Valeur 1",
    "Entête 2": "Valeur 2"
  },
  {
    "Entête 1": "Valeur 3",
    "Entête 2": "Valeur 4"
  }
];

arrayObjectsToSv(data);

// renvoie :
// "Entête 1;Entête 2
//  Valeur 1;Valeur 2
//  Valeur 3;Valeur 4"

Le second argument de la fonction permet de modifier les délimiteurs du CSV avec 2 paramètres :

  • "columnDelimiter" : séparateur de valeurs (";" par défaut)
  • "lineDelimiter" : séparateur de lignes (retour à la ligne "\n" par défaut)
var data = [
  {
    "Entête 1": "Valeur 1",
    "Entête 2": "Valeur 2"
  },
  {
    "Entête 1": "Valeur 3",
    "Entête 2": "Valeur 4"
  }
];

var options = {
  columnDelimiter: ',',
  lineDelimiter: '|'
};

arrayObjectsToSv(data, options);

// renvoie : "Entête 1,Entête 2|Valeur 1,Valeur 2|Valeur 3,Valeur 4"

Cet article vous a-t-il été utile ?

Super :)
Merci d'avoir donné votre avis !

Oups :(
Merci d'avoir donné votre avis qui va nous permettre de nous améliorer !

^