2017-01-18 3 views
0

У меня есть данные, разделенные запятыми;angular js csv string to json array

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

Мне нужно преобразовать это в массив json, как показано ниже. Как я могу это сделать в своем javascript-коде?

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

Что вы пробовали? Вы исследовали свой вопрос, прежде чем спрашивать? – evolutionxbox

+0

до сих пор, я пробовал различные комбинации методов angularjs, таких как angular.fromJson, JSON.parse, JSON.stringify и т. Д. –

+0

http://techslides.com/convert-csv-to-json-in-javascript взял меня две секунды до Google. – evolutionxbox

ответ

0

Ceeate массив var data = new Array(), передавать данные в нем, как так data.push({ item : value}), а затем преобразовать как так data_json = JSON.stringify(data). Я использую это для своих угловых проектов.

0

Поскольку это строка, возможно, вы можете ее разбить.

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

Я думаю, что ответ, который поступает с удаленного сервера, является строгими данными JSON.

// 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" 
    } 
    ] 
*/