2013-10-09 217 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