2013-10-09 8 views
3

Мне нужно принести документ csv и преобразовать его в JSON, до сих пор я смог преобразовать его в массив и из массива, который я пытаюсь создать объект JSON.Преобразование массива в JSON

Ниже приведен JavaScript, который строит JSON, но его не в той структуре, в которой я нуждаюсь, внизу является примером требуемой структуры. требуется

var jsonObj = []; //declare object 

for (var i=1;i<csvAsArray.length;i++) { 
    jsonObj.push({key: csvAsArray[i][0]}); //key 

    for (var l=1;l<csvAsArray[0].length;l++) { 
     jsonObj.push({label: csvAsArray[0][l], values: csvAsArray[i][l]}); //label + value respectively 
    } 
} 

Окончательный вывод:

{ 
    "key": "Sample 01", 
    "values": [ 
    { 
     "label" : "Something" , 
     "value" : 1 
    } , 
    { 
     "label" : "Something" , 
     "value" : 2 
    } 
    ] 
}, 
{ 
    "key": "Sample 02", 
    "values": [ 
    { 
     "label" : "Something" , 
     "value" : 5 
    } , 
    { 
     "label" : "Something" , 
     "value" : 4 
    } 
    ] 
} 
+3

Почему бы просто не использовать 'JSON.stringify() '? –

+0

Итак, ваша проблема состоит в том, чтобы правильно структурировать данные, а не как преобразовать их в JSON? Пожалуйста, проясните проблему. –

+0

Как выглядит текущий массив? –

ответ

3

Вы должны объявить значения и нажать, что на переменную TMP перед отправкой, что индекс на конечный/главный объект

var tmp_values, jsonObj = []; //declare object 

for (var i=1;i<csvAsArray.length;i++) { 
    var tmp_values = []; 
    for (var l=1;l<csvAsArray[0].length;l++) { 
     tmp_values.push({label: csvAsArray[0][l], value: csvAsArray[i][l]}); //label + value respectively 
    } 
    jsonObj.push({key: csvAsArray[i][0], values: tmp_values}); //key 
} 
0

Это script является распространенным способом для преобразования массива в JSON в JavaScript.

4

Просто используйте JSON.stringify() для преобразования массива в JSON строку

var jsonString = JSON.stringify(yourArray); 
0

Я не поклонник таких ответов, но this service, на мой взгляд, достаточно хорош, чтобы гарантировать это. Он может конвертировать различные форматы данных, включая CSV, JSON, XML, HTML-таблицу и т. Д. Он даже предлагает изменения в структуре вывода для некоторых форматов.

0

использовать этот код и очень просто разработать еще два массива

function getJSON(arrayID,arrayText) {  
    var JSON = "["; 
    //should arrayID length equal arrayText lenght and both against null 
    if (arrayID != null && arrayText != null && arrayID.length == arrayText.length) { 
     for (var i = 0; i < arrayID.length; i++) { 
      JSON += "{"; 
      JSON += "text:'" + arrayText[i] + "',"; 
      JSON += "id:'" + arrayID[i] + "'"; 
      JSON += "},"; 
     } 
    } 
    JSON += "]" 
    JSON = Function("return " + JSON + " ;"); 
    return JSON(); 
} 

и 3 массива

function getJSON(arrayID, arrayText, arrayNumber) { 
    var JSON = "["; 
    if (arrayID != null && arrayText != null && arrayNumber!=null && Math.min(arrayNumber.length,arrayID.length)==arrayText.length) { 
     for (var i = 0; i < arrayID.length; i++) { 
      JSON += "{"; 
      JSON += "text:'" + arrayText[i] + "',"; 
      JSON += "id:'" + arrayID[i] + "',"; 
      JSON += "number:'" + arrayNumber[i] + "'"; 
      JSON += "},"; 
     } 
    } 
    JSON += "]" 
    JSON = Function("return " + JSON + " ;"); 
    return JSON(); 
} 
+1

Никогда не используйте свои собственные функции сериализации, используйте 'JSON.stringify()'. – moonwave99

+0

только JSON.stringify()? нет другого решения –

+1

О сериализации, нет. О реструктуризации ваших данных вам нужно написать свою собственную логику курса ^^ – moonwave99

Смежные вопросы