Javascript 如何从JSON数据下载CSV文件?
我是一个新手程序员。我想从过滤后的json数据中下载json数据,并将其保存到CSV文件中。这里是我的JSON API数据: 步骤应如下所示:Javascript 如何从JSON数据下载CSV文件?,javascript,json,export-to-csv,Javascript,Json,Export To Csv,我是一个新手程序员。我想从过滤后的json数据中下载json数据,并将其保存到CSV文件中。这里是我的JSON API数据: 步骤应如下所示: 从日期选择器选择日期范围(例如:7-8日) 使用命令console.log(filteredData) 然后点击下载按钮,过滤后的数据(7-8月份的数据)将被下载 我可以做第一步和第二步。但是步骤3在我的代码中不起作用。有人能帮我写代码吗?目前,这是我的代码: $(函数(){ $('input[name=“datefilter”]”)。daterange
console.log(filteredData)
$(函数(){
$('input[name=“datefilter”]”)。daterangepicker({
决战:没错,
自动更新输入:false,
区域设置:{
取消标签:“清除”
}
});
$('input[name=“datefilter”]')。on('apply.daterangepicker',函数(ev,picker){
$(this.val(picker.startDate.format('YYYY-MM-DD')+'-'+picker.endDate.format('YYYY-MM-DD'));
var startDate=picker.startDate.format('YYYY-MM-DD');
var endDate=picker.endDate.format('YYYY-MM-DD');
如果(开始日期!=''&&endDate!=''){
console.log(开始日期、结束日期);
var端点https://gmlews.com/api/data/?node_id=1';
$.ajax({
方法:“获取”,
url:endpoint,
数据:{
开始日期:开始日期,
结束日期:结束日期
},
成功:功能(数据){
var数据=数据;
让filteredData=389;.filter(数据,函数(数据){
返回(data.timestamp>startDate&&
data.timestamp
代码中的问题是“filteredData”的变量引用之间存在简单的差异,因为它是在多个不同的范围中定义的,而在ajax调用之后,没有对主变量的全局引用。其次,在后面的部分中,#button1
的onclick事件之间存在差异,只需定义一次。至少能够在选择日期后生成JSON字符串,而将其放入CSV文件并不重要,只需将数组映射到逗号分隔的值并将其字符串化即可。无论如何:
$(函数(){
$('input[name=“datefilter”]”)。daterangepicker({
决战:没错,
自动更新输入:false,
区域设置:{
取消标签:“清除”
}
});
让我们过滤数据;
$('input[name=“datefilter”]')。on('apply.daterangepicker',函数(ev,picker){
$(this.val(picker.startDate.format('YYYY-MM-DD')+'-'+picker.endDate.format('YYYY-MM-DD'));
var startDate=picker.startDate.format('YYYY-MM-DD');
var endDate=picker.endDate.format('YYYY-MM-DD');
如果(开始日期!=''&&endDate!=''){
console.log(开始日期、结束日期);
var端点https://gmlews.com/api/data/?node_id=1';
$.ajax({
方法:“获取”,
url:endpoint,
数据:{
开始日期:开始日期,
结束日期:结束日期
},
成功:功能(数据){
var数据=数据;
Filteredata=389;.filter(数据,函数(数据){
返回(data.timestamp>startDate&&
data.timestamp
从日期开始的数据:
单击此按钮可从节点1下载所有数据
下载
这应该可以:
了解更多关于
这是主要问题:
var filteredData=filteredData;
这是一个工作脚本
我做了什么
让filteredData;
const ConvertToCSV=数据=>{
如果(!data | | data
$(function() {
$('input[name="datefilter"]').daterangepicker({
showDropdowns : true,
autoUpdateInput: false,
locale: {
cancelLabel: 'Clear'
}
});
$('input[name="datefilter"]').on('apply.daterangepicker', function(ev, picker) {
$(this).val(picker.startDate.format('YYYY-MM-DD') + ' - ' + picker.endDate.format('YYYY-MM-DD'));
var startDate = picker.startDate.format('YYYY-MM-DD');
var endDate = picker.endDate.format('YYYY-MM-DD');
if (startDate != '' && endDate != '') {
console.log(startDate, endDate);
var endpoint = 'https://gmlews.com/api/data/?node_id=1';
$.ajax({
method: "GET",
url: endpoint,
data: {
startDate: startDate,
endDate: endDate
},
success: function(data){
var data = data;
let filteredData = _.filter(data, function(data){
return (data.timestamp > startDate &&
data.timestamp < endDate)
});
console.log(filteredData);
} //function(data)end
}) //ajax end
} //if function end
$('input[name="datefilter"]').on('cancel.daterangepicker', function(ev, picker) {
$(this).val('');
});
}); //apply button end
//download button
$("#button1").on('click', function(e) {
// JSON to CSV Converter
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 += ','
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
// Example
$(document).ready(function () {
// Create Object
var filteredData = filteredData;
// Convert Object to JSON
var jsonObject = JSON.stringify(filteredData);
// Convert JSON to CSV & Display CSV
$('#button1').onclick(ConvertToCSV(jsonObject));
});
})
}); //js function end