JavaScript 將 CSV 格式的內容轉換為 JSON

前言

前幾天正在弄公司的額外工作,其中一個需求是會拿到 .csv 檔案,但是本人還蠻討厭這類型的檔案。因此我就在尋找有沒有方式可以把它變成 JSON 之類的。

在經過一番爬文後,找到一個方式是能讓 JavaScript 將收到的 CSV 內容轉換為 JSON,我把這個 function 記錄在這,分享給大家,也方便之後的我回來抄

程式碼

這個 function 的程式碼如下:

function csvJSON(csv){
    var lines = csv.split("\n");
    var result = [];    
    var commaRegex = /,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/g    
    var quotesRegex = /^"(.*)"$/g
    var headers = lines[0].split(commaRegex).map(h => h.replace(quotesRegex, "$1"));
    for(var i = 1 ; i < lines.length ; i++){
        var obj = {};
        var currentline = lines[i].split(commaRegex);
        for(var j = 0 ; j < headers.length ; j++) obj[headers[j]] = currentline[j].replace(quotesRegex, "$1");
        result.push(obj);
    }
    return result;
}

之後就把收到的 CSV 餵給這個 function,他就會吐 JSON 回去給你囉。