您好,欢迎访问一九零五行业门户网

使用javascript实现json数据以csv格式下载_javascript技巧

摘要:
最近有一个非项目的小需求,就是将项目开发分工文件化,方便后期管理维护。但是开发时,分工安排都是以json格式记录的,所以就做了一个将json数据以csv格式下载到本地。
代码:
复制代码 代码如下:
download csv
>http://code.jquery.com/jquery-1.11.0.min.js>>
enter json data
[{vehicle:bmw,date:30 jul 2013 09:24 am,location:hauz khas,speed:42},{vehicle:honda cbr,date:30 jul 2013 12:00 am,location:military road,speed:0},{vehicle:supra,date:30 jul 2013 07:53 am,location:sec-45,speed:58},{vehicle:land cruiser,date:30 jul 2013 09:35 am,location:dlf phase i,speed:83}]
download csv
download.js
复制代码 代码如下:
$(document).ready(function() {
    use strict;
    var mo = {
        init: function() {
            $('.download').click(function() {
                var data = $('#txt').val();
                if (data === '') {
                    return;
                }
                mo.jsontocsvconvertor(data, true);
            });
        },
        jsontocsvconvertor: function(jsondata, showlabel) {
            var arrdata = typeof jsondata !== 'object' ? json.parse(jsondata) : jsondata;
            var csv = '';
            if (showlabel) {
                var row = ;
                for (var index in arrdata[0]) {
                    row += index + ',';
                }
                row = row.slice(0, -1);
                csv += row + '\r\n';
            }
            for (var i = 0; i                 var row = ;
                for (var index in arrdata[i]) {
                    var arrvalue = arrdata[i][index] == null ? : '=' + arrdata[i][index] + '';
                    row += arrvalue + ',';
                }
                row.slice(0, row.length - 1);
                csv += row + '\r\n';
            }
            if (csv == '') {
                growl.error(invalid data);
                return;
            }
            var filename = result;
            if (mo.msieversion()) {
                var iewindow = window.open();
                iewindow.document.write('sep=,\r\n' + csv);
                iewindow.document.close();
                iewindow.document.execcommand('saveas', true, filename + .csv);
                iewindow.close();
            } else {
                var uri = 'data:application/csv;charset=utf-8,' + escape(csv);
                var link = document.createelement(a);
                link.href = uri;
                link.style = visibility:hidden;
                link.download = filename + .csv;
                document.body.appendchild(link);
                link.click();
                document.body.removechild(link);
            }
        },
        msieversion: function() {
            var ua = window.navigator.useragent;
            var msie = ua.indexof(msie );
            if (msie > 0 || !!navigator.useragent.match(/trident.*rv\:11\./)) // if internet explorer, return version number
            {
                return true;
            } else { // if another browser,
                return false;
            }
            return false;
        },
        main: function() {
            mo.init();
        }
    };
    mo.main();
});
小结:
注意json格式[{},{}],文件名是在js中定义的变量filename。主要问题是他会自动添加一行空行,且每个元素都会在值前面加个'='。
下载下来的数据格式为:
其它类似信息

推荐信息