2015-10-20 8 views
0

Привет, я пытаюсь получить файл csv из вложенного json-массива. Я также получаю csv, но проблема - имя_данных, а имя drop_seller отображается как [object, object] из-за вложенных данных json с изображением файл моего файла CSV enter image description here вот мой массивКак получить csv из вложенных json-данных

{ 
"id":"1925", 
"booking_id":"1442931120", 
"appointment_time":"2015-09-29 16:00:00", 
"booking_address":"Sector 15 gurgaon", 
"booking_type":"later", 
"category_id":"9", 
"category_name":"Wash & Iron", 
"stage":"accepted", 
"lat":"74.83908", 
"invoice_price":null, 
"lon":"87.7333", 
"user_name":" ", 
"user_mobile_number":"8800292916", 
"user_id":"1782", 
"booking_time":"2015-09-22 19:09:55", 
"price":null, 
"seller_id":"52", 
"payment_stage":"individual", 
"discount":null, 
"visting_charge":"0", 
"rating":null, 
"promo_code":"", 
"drop_address":"", 
"drop_time":"2015-10-01 20:18:28", 
"comments":"", 
"platform":"Web", 
"order_return":"0", 
"cloths_count":null, 
"dc_cloths_count":null, 
"cloths_weight":null, 
"categories":null, 
"service_type":"regular", 
"category_type":"0", 
"seller":{ 
"name":"Dinesh", 
"mobile_number":"9818782536", 
"distance":"10", 
"lat":"28.4356578", 
"lon":"77.1110703", 
"id":"52", 
"picture":"resources\/seller\/images\/20150709004010_559e2c4248c73.jpg", 
"provider_picture":"resources\/seller\/provider-pictures\/logo_559e2c4248d4a.png" 
}, 
"dropSeller":{ 
"name":"Dinesh", 
"mobile_number":"9818782536", 
"distance":"10", 
"lat":"28.4356578", 
"lon":"77.1110703", 
"id":"52", 
"picture":"resources\/seller\/images\/20150709004010_559e2c4248c73.jpg", 
"provider_picture":"resources\/seller\/provider-pictures\/logo_559e2c4248d4a.png" 
} 
} 

и вот мой файл JavaScript

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); 
} 

и я передаю объект JSON, как раньше я показал, и я получаю файл CSV также, но проблема заключается в имени продавца и drop_seller имя, показывающее как [объект, объект] данные остатка, поступающие правильно, я думаю, это потому, что эти значения находятся в вложенном json, как получить это имя, любую помощь пожалуйста

+0

На самом деле я не совсем понимаю ваш код. Вы рассматриваете объект как массив? Как должен выглядеть желаемый результат? Я предполагаю, что вы только анализируете родительский объект для его свойств и их значений, для двух, у которых объекты как значения вместо строки отображаются как [object Object]. Вам нужно будет построить проверку, если свойство является самим объектом, а затем углубится на уровень для чтения значений. – Danmoreng

ответ

1

Если я правильно вас понимаю, вы хотите, чтобы только имя продавца отображалось, а не все его свойства?

Если это так, просто добавьте чек для объекта, а затем вместо него укажите его имя.

for (var index in arrData[i]) { 
    var data = arrData[i][index]; 
    if(typeof data === 'object'){ 
     data = data.name; 
    } 
    row += '"' + data + '",'; 
} 
Смежные вопросы