将数组转换为JSON

3
我需要导入一个csv文档并将其转换为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() 呢? - user1864610
那么,你的问题在于如何正确地组织数据,而不是如何将其转换为JSON?请明确指出问题。 - Felix Kling
当前数组长什么样? - Lloyd Banks
请发布一个CSV文件的示例,以便生成所需的输出。另外,我假设你的输出示例中缺少一个外部的[],对吗? - Michael Geary
5个回答

5
只需使用JSON.stringify()将您的数组转换为JSON字符串。
var jsonString = JSON.stringify(yourArray);

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

使用这段代码,可以非常简单地开发出两个以上的数组。

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
只需要使用JSON.stringify()吗?没有其他解决方案吗? - Behnam
1
关于序列化,不是。关于重构数据,你当然要编写自己的逻辑 ^^ - moonwave99

0

这个脚本是在JavaScript中将数组转换为JSON的常见方法。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接