Javascript 以JSON格式创建可下载的csv文件
我正在尝试创建一个csv文件,我可以使用从以前的问题中找到的一些代码从我的网页下载,但是当一些项目出现单次退出时,我遇到了问题,例如,Javascript 以JSON格式创建可下载的csv文件,javascript,Javascript,我正在尝试创建一个csv文件,我可以使用从以前的问题中找到的一些代码从我的网页下载,但是当一些项目出现单次退出时,我遇到了问题,例如,今天的 数据来自MySQL数据库,我使用API调用该数据库,然后使用一些函数将其转换为csv 我用于获取初始数据的代码如下所示: <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL =&
今天的
数据来自MySQL数据库,我使用API调用该数据库,然后使用一些函数将其转换为csv
我用于获取初始数据的代码如下所示:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "api_endpoint",
));
$response = curl_exec($curl);
$err = curl_error($curl);
$obj = json_decode($response, true);
curl_close($curl);
?>
<script>
var js_data = '<?php echo json_encode($obj); ?>';
var js_obj_data = JSON.parse(js_data);
</script>
function convertToCSV(objArray) {
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 += ','
var item = array[i][index]
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
function exportCSVFile(items, fileTitle) {
var headers = {
race_id: 'race_id Model',
meeting_date: "meeting_date",
time: "time",
course: "course",
name: "name",
back_price: "back_price",
probability: "probability",
qs_price: "qs_price"
};
if (headers) {
items.unshift(headers);
}
var csv = this.convertToCSV(items);
var exportedFilenmae = fileTitle + '.csv' || 'export.csv';
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, exportedFilenmae);
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", "tissue_prices.csv");
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
var fileTitle = 'tissue_prices';
js_obj_数据的示例如下所示
{
"race_id": 123456,
"meeting_date": "11/6/2020",
"time": "16:00",
"course": "Gowran_Park",
"name": "Cap D'antibes",
"back_price": 8.4,
"probability": 5,
"qs_price": 20.77
}
我在控制台的这一行上得到了一个意外标识符
错误。如果我删除了这个记录,那么它可以正常工作吗
如果我删除了上面的记录,那么我会得到一个预期的输出,它是其中一个字段中唯一有一个引号的记录。
如果删除除该记录以外的所有记录,则会出现以下错误:
js_data = '[{"race_id":940558,"meeting_date":"11\/6\/2020","time":"16:00","course":"Gowran_Park","name":"Cap D'antibes","back_price":8.4000000000000003552713678800500929355621337890625,"probability":5,"qs_price":20.769999999999999573674358543939888477325439453125}]
奇怪的是,这些值怎么这么长,因为我用2个小数加载到数据库中,并且我还使用decimal(8,2)
作为数据类型
非常感谢您的帮助。我在这里发现了类似的问题
[
更改此选项:
var js_data='';
var js_data='';解决了这个问题
谢谢大家的帮助我在这里发现了类似的问题
[
更改此选项:
var js_data='';
var js_data='';解决了这个问题
感谢大家的帮助出于好奇,您可以这样做var jsonObject=JSON.stringify(items);
,但是在convertToCSV
中您要做的第一件事是JSON.parse(objArray)
。我在控制台的这一行上收到一个意外的标识符错误。不清楚您在这里指的是哪一行?正是因为引号的处理,CSV是一种糟糕的格式。我强烈建议使用一个好的库为您生成CSV,而不是编写自己的。如果您确实想编写自己的CSV,请找到一个合适的CSV spec指定如何处理所有这些异常。在您添加的代码中,js_data
是一个字符串,并且您正在使用'
作为字符串分隔符。这是您的问题,因为您的字符串已经包含一个'
。(而且您仍然缺少结束的'
)。如果您需要js_data
作为字符串,那么您需要使用\
正确地对字符串进行转义。例如js_data='[{“种族id”:940558,“会面日期”:“11\/6\/2020”,“时间”:“16:00”,“课程”:“Gowran_Park”,“姓名”:“Cap D'antibes”,“back_price”:8.40000000000000003552713678800500925562133789065,“概率”:5,“qs价格”:20.769999999573674358543939939888477325439453125}]
您所说的语法错误暗示您使用的是无效的javascript语法。Matt提到的单引号问题会触发此问题。使用backticksjs_data=`[{}]`
出于好奇,您可以这样做var jsonObject=JSON.stringify(items);
,但是在convertToCSV
中要做的第一件事是JSON.parse(objArray)
。我在控制台的这一行上收到一个意外的标识符错误。不清楚您在这里指的是哪一行?正是因为引号的处理,CSV是一种糟糕的格式。我强烈建议使用一个好的库为您生成CSV,而不是编写自己的。如果您确实想编写自己的CSV,请找到一个合适的CSV spec指定如何处理所有这些异常。在您添加的代码中,js_data
是一个字符串,并且您正在使用'
作为字符串分隔符。这是您的问题,因为您的字符串已经包含一个'
。(而且您仍然缺少结束的'
)。如果您需要js_data
作为字符串,那么您需要使用\
正确地对字符串进行转义。例如js_data='[{“种族id”:940558,“会面日期”:“11\/6\/2020”,“时间”:“16:00”,“课程”:“Gowran_Park”,“姓名”:“Cap D'antibes”,“back_price”:8.40000000000000003552713678800500925562133789065,“概率”:5,“qs价格”:20.769999999573674358543939939888477325439453125}]
您所说的语法错误意味着您使用的javascript语法无效。Matt提到的单引号问题将触发此问题。使用backticksjs_data=`[{}]`
js_data = '[{"race_id":940558,"meeting_date":"11\/6\/2020","time":"16:00","course":"Gowran_Park","name":"Cap D'antibes","back_price":8.4000000000000003552713678800500929355621337890625,"probability":5,"qs_price":20.769999999999999573674358543939888477325439453125}]