javascript - snippet CSV to JSON
Auteur : adrien_contrib
Date de parrution : 2022-12-30 09:16:08
Dernière modification :
voici deux examples de code pour passer de CSV à JSON et vice et versa
lorsque j'ai dû coder une fonction pour passer de CSV à JSON, je n'ai trouver sur les forums que des codes qui, certes, faisait le travaille, mais pas exactement comme je le voulait: en effet, la première ligne d'un CSV est généralement chargé de définir les noms de champs, qui doivent se retrouver sous forme de clef dans les objets JSON. Or ce que j'ai trouver ne faisait pas cela: souvent, la premiere ligne est considéré comme un objet au même titre que les autres, et les objets sont des arrays (pas de clefs-valeurs). De plus, je voulait que les résultats numériques soit traîté comme tels, alors qu'ils étaient systématiquement changé en strings dans les fonctions que j'ai trouvé. Voici donc une petite customisation de ce que j'ai trouver afin de sortir un array contenant des objets propres:
CSV to JSON
function csvToJson(csv) {
// source: https://portfolio.accesdenied.net/pages/blog-art.php?art=24
// \n or \r\n depending on the EOL sequence
const lines = csv.split('\n');
const delimeter = ';';
const result = [];
const headers = lines[0].split(delimeter);
for (const line of lines) {
const obj = {};
const row = line.split(delimeter);
for (let i = 0; i < headers.length; i++) {
const header = headers[i];
obj[header] = row[i];
if (obj[header] && !isNaN(obj[header])) {
obj[header] = parseFloat(obj[header]);
};
};
result.push(obj);
};
result.splice(0, 1);
return result;
};
JSON to CSV
function convertToCSV(objArray) {
// source: https://portfolio.accesdenied.net/pages/blog-art.php?art=24
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';
}
// add keys
// see https://stackoverflow.com/questions/3068534/getting-javascript-object-key-list
if (array.length >= 1) {
const objForKey = array[0];
console.log('objForKey', objForKey);
console.log('ObjForKey.keys', Object.keys(objForKey));
let stringKeysArray = JSON.stringify(Object.keys(objForKey));
stringKeysArray = stringKeysArray.replaceAll('{', '');
stringKeysArray = stringKeysArray.replaceAll('}', '');
stringKeysArray = stringKeysArray.replaceAll('[', '');
stringKeysArray = stringKeysArray.replaceAll(']', '');
stringKeysArray = stringKeysArray.replaceAll('"', '');
console.log(stringKeysArray);
str = stringKeysArray + '\r\n' + str;
}
return str;
}