在JavaScript中,如何在将csv转换为json时忽略空行

在JavaScript中,如何在将csv转换为json时忽略空行,javascript,json,regex,csv,Javascript,Json,Regex,Csv,我正在从事一个需要将csv转换为json的项目。我找到一把小提琴。唯一的问题是,如果在末尾添加空行并转换为JSON,它将返回空白行作为对象。 e、 g 会回来的 [{"Id":"1","UserName":"Sam Smith"}, {"Id":"2","UserName":"Fred Frankly"}, {"Id":"1","UserName":"Zachary Zupers"}, {"Id":""}, {"Id":""}] 关于堆栈溢出的其他答案似乎与其他编程语言有关,尽管它们似乎回答了

我正在从事一个需要将csv转换为json的项目。我找到一把小提琴。唯一的问题是,如果在末尾添加空行并转换为JSON,它将返回空白行作为对象。

e、 g

会回来的

[{"Id":"1","UserName":"Sam Smith"},
{"Id":"2","UserName":"Fred Frankly"},
{"Id":"1","UserName":"Zachary Zupers"},
{"Id":""},
{"Id":""}]
关于堆栈溢出的其他答案似乎与其他编程语言有关,尽管它们似乎回答了提问者的问题,但它们解决了问题,没有进行解释。如果你能解释你的答案是如何工作的,那就有额外的模糊性。

添加一个.trim()来删除strData周围的空白

strData=strData.trim()

//来源:http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
//这将把带分隔符的字符串解析为
//数组。默认分隔符是逗号,但是
//可以在第二个参数中重写。
函数CSVToArray(标准数据、标准限制器){
strData=strData.trim();
//检查是否定义了分隔符。如果未定义,
//然后默认为逗号。
STRDELIMITOR=(STRDELIMITOR | |“,”);
//创建正则表达式以解析CSV值。
var objPattern=new RegExp((
//分隔符。
“(\\”+STRDELIMITOR+“\\\r?\\n\\\\r^)”+
//引用字段。
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
//标准字段。
“([^\“\\”+strDelimiter+“\\r\\n]*)”,“gi”);
//创建一个数组来保存我们的数据
//默认为空的第一行。
var arrData=[[]];
//创建一个数组来保存我们的单个模式
//匹配组。
var=null;
//在正则表达式匹配项上保持循环
//直到我们再也找不到匹配的。
while(arrMatches=objPattern.exec(strData)){
//获取找到的分隔符。
var strMatchedDelimiter=arrMatches[1];
//检查给定的分隔符是否有长度
//(不是字符串的开头)如果匹配
//字段分隔符。如果id没有,则我们知道
//此分隔符是行分隔符。
if(strMatchedDelimiter.length&(strMatchedDelimiter!=strDeLiimiter)){
//因为我们得到了一行新的数据,
//向数据数组中添加一个空行。
arrData.push([]);
}
//现在我们已经把分隔符去掉了,
//让我们检查一下我们使用的是哪种值
//捕获(引用或未引用)。
如果(匹配[2]){
//我们找到了一个引用值。当我们捕获
//如果此值为空,请取消勾选任何双引号。
var strMatchedValue=arrMatches[2]。替换(
新的RegExp(“\”,“g”),“\”;
}否则{
//我们找到了一个未引用的值。
var strMatchedValue=arrMatches[3];
}
//现在我们有了值字符串,让我们添加
//它将被保存到数据数组中。
arrData[arrData.length-1].push(strMatchedValue);
}
//返回解析后的数据。
返回(ARR数据);
}
函数CSV2JSON(csv){
var阵列=csv阵列(csv);
var objArray=[];
对于(变量i=1;i
#标题{字体大小:x-large;字体重量:粗体;}
.text{宽度:99%;高度:200px;}
.small{font size:small;}

CSV到JSON
CSV到JSON转换器


将您的CSV粘贴到此处:

“Id”、“用户名” “1”,“山姆·史密斯” “2”,“弗雷德坦白” “1”、“Zachary Zupers”
转换为JSON 下载JSON 根据公布的代码

添加.trim()以删除strData周围的空白

strData=strData.trim()

//来源:http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
//这将把带分隔符的字符串解析为
//数组。默认分隔符是逗号,但是
//可以在第二个参数中重写。
函数CSVToArray(标准数据、标准限制器){
strData=strData.trim();
//检查是否定义了分隔符。如果未定义,
//然后默认为逗号。
STRDELIMITOR=(STRDELIMITOR | |“,”);
//创建正则表达式以解析CSV值。
var objPattern=new RegExp((
//分隔符。
“(\\”+STRDELIMITOR+“\\\r?\\n\\\\r^)”+
//引用字段。
"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
//标准字段。
“([^\“\\”+strDelimiter+“\\r\\n]*)”,“gi”);
//创建一个数组来保存我们的数据
//默认为空的第一行。
var arrData=[[]];
//创建一个数组来保存我们的单个模式
//匹配组。
var=null;
//在正则表达式匹配项上保持循环
//直到我们再也找不到匹配的。
while(arrMatches=objPattern.exec(strData)){
//获取找到的分隔符。
var strMatchedDelimiter=arrMatches[1];
//检查给定的分隔符是否有长度
//(不是字符串的开头)如果匹配
//字段分隔符。如果id没有,则我们知道
//此分隔符是行分隔符。
if(strMatchedDelimiter.length&(strMatchedDelimiter!=strDeLiimiter)){
//自从我们达成协议以来
[{"Id":"1","UserName":"Sam Smith"},
{"Id":"2","UserName":"Fred Frankly"},
{"Id":"1","UserName":"Zachary Zupers"},
{"Id":""},
{"Id":""}]