2015-10-28 44 views
0

我有這樣的代碼其中工程改造JSON對象到CSV文件中流星從JSON obj轉換爲CSV

HTML:

<div class='mydiv'>  
    <textarea id="txt" class='txtarea'>[{"Vehicle":"BMW","Date":"30, Jul 2013 09:24 AM","Location":"Hauz Khas, Enclave, New Delhi, Delhi, India","Speed":42},{"Vehicle":"Honda CBR","Date":"30, Jul 2013 12:00 AM","Location":"Military Road, West Bengal 734013, India","Speed":0},{"Vehicle":"Supra","Date":"30, Jul 2013 07:53 AM","Location":"Sec-45, St. Angel's School, Gurgaon, Haryana, India","Speed":58},{"Vehicle":"Land Cruiser","Date":"30, Jul 2013 09:35 AM","Location":"DLF Phase I, Marble Market, Gurgaon, Haryana, India","Speed":83},{"Vehicle":"Suzuki Swift","Date":"30, Jul 2013 12:02 AM","Location":"Behind Central Bank RO, Ram Krishna Rd by-lane, Siliguri, West Bengal, India","Speed":0},{"Vehicle":"Honda Civic","Date":"30, Jul 2013 12:00 AM","Location":"Behind Central Bank RO, Ram Krishna Rd by-lane, Siliguri, West Bengal, India","Speed":0},{"Vehicle":"Honda Accord","Date":"30, Jul 2013 11:05 AM","Location":"DLF Phase IV, Super Mart 1, Gurgaon, Haryana, India","Speed":71}]</textarea> 
    <button class='gen_btn'>Generate File</button> 
</div> 

JS:

$(document).ready(function(){ 
    $('button').click(function(){ 
     var data = $('#txt').val(); 
     if(data == '') 
      return; 

     JSONToCSVConvertor(data, "Vehicle Report", true); 
    }); 
}); 

function JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) { 
    //If JSONData is not an object then JSON.parse will parse the JSON string in an Object 
    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; 

    var CSV = '';  
    //Set Report title in first row or line 

    CSV += ReportTitle + '\r\n\n'; 

    //This condition will generate the Label/Header 
    if (ShowLabel) { 
     var row = ""; 

     //This loop will extract the label from 1st index of on array 
     for (var index in arrData[0]) { 

      //Now convert each value to string and comma-seprated 
      row += index + ','; 
     } 

     row = row.slice(0, -1); 

     //append Label row with line break 
     CSV += row + '\r\n'; 
    } 

    //1st loop is to extract each row 
    for (var i = 0; i < arrData.length; i++) { 
     var row = ""; 

     //2nd loop will extract each column and convert it in string comma-seprated 
     for (var index in arrData[i]) { 
      row += '"' + arrData[i][index] + '",'; 
     } 

     row.slice(0, row.length - 1); 

     //add a line break after each row 
     CSV += row + '\r\n'; 
    } 

    if (CSV == '') {   
     alert("Invalid data"); 
     return; 
    } 

    //Generate a file name 
    var fileName = "MyReport_"; 
    //this will remove the blank-spaces from the title and replace it with an underscore 
    fileName += ReportTitle.replace(/ /g,"_"); 

    //Initialize file format you want csv or xls 
    var uri = 'data:text/csv;charset=utf-8,' + escape(CSV); 

    // Now the little tricky part. 
    // you can use either>> window.open(uri); 
    // but this will not work in some browsers 
    // or you will not get the correct file extension  

    //this trick will generate a temp <a /> tag 
    var link = document.createElement("a");  
    link.href = uri; 

    //set the visibility hidden so it will not effect on your web-layout 
    link.style = "visibility:hidden"; 
    link.download = fileName + ".csv"; 

    //this part will append the anchor tag and remove it after automatic click 
    document.body.appendChild(link); 
    link.click(); 
    document.body.removeChild(link); 
} 

這裏是代碼工作:http://jsfiddle.net/hybrid13i/JXrwM/

問題是,我的json對象存儲在一個集合中,任何人都知道如何獲取打印在客戶端中的json格式對象,然後使用上面提到的腳本?

所以我想在客戶端打印作爲一個正常的JSON例子像這樣我的流星集合對象:

[{"Vehicle":"BMW","Date":"30, Jul 2013 09:24 AM","Location":"Hauz Khas, Enclave, New Delhi, Delhi, India","Speed":42}, 

回答

1

如果你想一個集合轉換成數組(JSON),你只需使用.fetch()

MyCollection.find({}).fetch(); 

還有一個預建收集到CSV導出包lfergson:exportcsv