javascript - snippet CSV to JSON

Auteur : adrien_contrib
Date de parrution : 2022-12-30 09:16:08
Dernière modification :

js



thumbnail de l'article

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;
}

tags associés :

languages

js

tools & techno

centres d'intérêts