正在创建csv文件,但不会在列以及列中保留双引号

时间:2019-02-13 20:13:57

标签: javascript arrays json csv escaping

我有一个基于json响应的使用javascript生成的csv文件

这是有问题的csv:

Name,Number,Color,Percent
"George Clooney","45-01-4","Purple","94%"
"Max Morgan","102-99-0","1,3-Green","84%"
"Chuck Norris","71-21-8","Blue "Sky",","99%"
"Larry David","1063-99-0","1,9-Yellow","82%"

我将数据的每一列都用双引号引起来,因此,如果有逗号,它将不会创建额外的列,并使用array.join(',')从中生成一个字符串,以附加字符串最终的csv文件。

let array = [
    '"' + arr['name'] + '"',
    '"' + arr['number'] + '"',
    '"' + arr['color'] + '"',
    '"' + arr['percent'] + '"',
];

对于以名字Chuck Norris开头的行,我特意在颜色中添加了"Sky",以确保其有效。该数据的json响应实际上是:Blue \"Sky\",

我认为它带有斜线,因此它保留了双引号。

以下是屏幕快照返回json时在网络浏览器中的外观的屏幕截图: enter image description here

当我在电子表格应用程序中打开csv文件时,其显示方式如下: enter image description here

您会在“百分比”列中注意到一个逗号,它应该在“颜色”列中,并且在“天空”的左侧应该有一个双引号。

enter image description here

这是在这种情况下数据想要的预期输出。

我觉得这与创建数组时不考虑斜杠\有关,因为我做了console.log(array.join('));并没有看到斜线,也许它们需要保留才能正常工作,我已经尝试了很多方法,并且此时我正在旋转车轮。我希望有一种能够正确处理带有其他字符的其他边缘情况的解决方案。

0 个答案:

没有答案