2017-01-18 3 views
0

Ich habe einige kommaseparierte Daten;eckig js csv string zu json array

"HotelName","Remained","Date" 
"Maxx","4","Jun 26 2016" 
"Voyage","3","Jun 24 2016" 

Ich muss dies in ein JSON-Array wie unten konvertieren. Wie kann ich das in meinem JavaScript Code machen?

[ 
    { 
    HotelName:"Maxx", 
    Remained:"4", 
    Date:"Jun 26 2016" 
    }, 
    { 
    HotelName:"Voyage", 
    Remained:"3", 
    Date:"Jun 24 2016" 
    } 
] 
+0

Was haben Sie bisher versucht? Hast du deine Frage recherchiert, bevor du gefragt hast? – evolutionxbox

+0

bis jetzt habe ich verschiedene Kombinationen von angularjs Methoden wie angular.fromJson, JSON.parse, JSON.stringify usw. ausprobiert. –

+0

http://techslides.com/convert-csv-to-json-in-javascript nahm mich zwei Sekunden zum googeln. – evolutionxbox

Antwort

0

Ceeate ein Array var data = new Array(), Push-Daten in ihm wie so data.push({ item : value}) und dann wie so data_json = JSON.stringify(data) konvertieren. Ich benutze das für meine eckigen Projekte.

0

Da es sich um einen String handelt, könnten Sie ihn vielleicht teilen.

var lines data.split('\n'); 
var array = []; 
if(lines.length > 0){ 
    var titles = lines[0].split(','); 
    for(var i=1; i<lines.length; ++i){ 
     var obj = lines[i].split(','); 
     var newItem = {}; 
     //you should check that titles and obj are of same length 
     for(var j=0, j<titles.length; ++j){ 
      newItem[titles[j]] = obj[j]; 
     } 
     array.push(newItem); 
    } 
} 
0

Ich denke, die Antwort, die vom Remote-Server kommt, ist ein Stringed JSON-Daten.

// Possible a CSV data string from your server; 
var csvData = "\"HotelName\",\"Remained\",\"Date\"\"Maxx\",\"4\",\"Jun 26 2016\",\"Voyage\",\"3\",\"Jun 24 2016\""; 

var NUMBER_OF_COLUMNS = 3; 
var columns = []; 
var arrayData = []; 

// Remove double quotations in csvData and convert it to the array; 
csvData = csvData.replace(/"/g, "").split(','); 
columns = csvData.slice(0, NUMBER_OF_COLUMNS); 
csvData = csvData.slice(NUMBER_OF_COLUMNS); 

var rowObject = {}; 
csvData.forEach(function(item, index) { 
    rowObject[columns[index % (NUMBER_OF_COLUMNS)]] = item; 
    if (index % (NUMBER_OF_COLUMNS) == 2) { 
    arrayData.push(rowObject); 
    rowObject = {}; 
    } 
}) 

console.log(arrayData); 
/* 
    [ 
    { 
     DataMaxx: "Voyage", 
     HotelName: "4", 
     Remained: "Jun 26 2016" 
    } 
    ] 
*/