2013-10-09 260 views
3

我需要引入一個csv文檔並將其轉換爲JSON,到目前爲止,我已經能夠將它轉換爲數組,並從數組中轉換爲我試圖構建JSON對象。將數組轉換爲JSON

下面是構建JSON的JavaScript,但它不在我需要的結構中,下面是一個所需結構的示例。

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() '? – 2013-10-09 03:51:01

+0

所以,你的問題是正確地構造數據,而不是如何將其轉換爲JSON?請清楚這個問題。 –

+0

當前數組是什麼樣的? –

回答

3

您需要聲明的價值和推動該指數到最後/主要對象

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

前推是到TMP變量只需使用JSON.stringify()你的數組轉換爲JSON字符串

var jsonString = JSON.stringify(yourArray); 
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