前言
前幾天正在弄公司的額外工作,其中一個需求是會拿到 .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 回去給你囉。