如何在Javascript中将JSON转换为数组

3
我希望把JSON转化成数组,并通过以下方式返回值: console.log(data); 返回的值为:

[{ "data" : [  [object]  ] },
[{ "data" : [  [object] , [object]  ] }

因此,我通过以下方式转换为JSON:

console.log(JSON.stringify(data, null, "    "));

数值为:

[
  {
    "data" : [
          {
            "month" : 1,
             "name" : "Alex",
             "sum" : 20
          }
      ]  
  },
  {
    "data" : [
          {
            "month" : 2,
             "name" : "Zara",
             "sum" : 18
          },
          {
            "month" : 2,
            "name" : "Zara",
            "sum" : 19
          }
      ]  
  }

]

I want convert to Array :

{
  "data" : { [ 1, "Alex", 20 ]  }
},
{
  "data" : { [ 2, "Zara", 18 ]  },
           { [ 2, "Zara", 19 ]  }
}

如何进行转换?

3
可能是 将 JSON 对象转换为 JavaScript 数组 的重复问题。 - Ryan Turnbull
可能是将JS对象转换为数组的重复问题。 - samAlvin
您期望的 JSON 无效。 - Shiladitya
"data" :{ [ 1, "Alex", 20 ] } - this looks like bad syntax, you probably need to learn basics first. you probably need data: [ 1, "Alex", 20 ] - Max Deepfield
3个回答

9

您可以尝试以下内容:

var arr = Object.keys(obj).map(function(k) { return obj[k] });

1
您期望的输出语法不正确,因为您无法拥有没有键值对的对象。 您可以将输出设置为
{
  "data" : [ [ 1, "Alex", 20 ]  ]
},
{
  "data" : [[ 2, "Zara", 18 ]  ,
           [ 2, "Zara", 19 ]  ]
}

这是考虑上述输出的解决方案。

var inputArr = [
  {
    "data" : [
          {
            "month" : 1,
             "name" : "Alex",
             "sum" : 20
          }
      ]  
  },
  {
    "data" : [
          {
            "month" : 2,
             "name" : "Zara",
             "sum" : 18
          },
          {
            "month" : 2,
            "name" : "Zara",
            "sum" : 19
          }
      ]  
  }
];

inputArr.forEach(function(item){
    for (var i=0; i< item.data.length; i++){
        var myArr = [];
        myArr.push(item.data[i].month);
        myArr.push(item.data[i].name);
        myArr.push(item.data[i].sum);
        item.data[i] = myArr;
    }
})

console.log(JSON.stringify(inputArr));

注意:如果您的代码可以使用ES6,解决方案可以简化。


0

这里提供一个(使用jQuery)的解决方案 https://jsfiddle.net/mhhqj1nc/

var data = [
  {
    "data" : [
          {
            "month" : 1,
             "name" : "Alex",
             "sum" : 20
          }
      ]  
  },
  {
    "data" : [
          {
            "month" : 2,
             "name" : "Zara",
             "sum" : 18
          },
          {
            "month" : 2,
            "name" : "Zara",
            "sum" : 19
          }
      ]  
  }];

var newdata = [];

$.each(data, function(i, v){
  newdata.push({data: []});
  var temp = [];
  $.each(v.data, function(k, val){
    var keys = Object.keys(v.data[k]);
    $.each(keys, function(j){
      temp.push(v.data[k][keys[j]]);
    });
    newdata[i].data.push(temp);
    temp = [];
  });
});
console.log(JSON.stringify(newdata));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

您的期望输出无效的

期望输出应该是

[{
  "data": [1, "Alex", 20]
 }, {
  "data": [
    [2, "Zara", 18],
    [2, "Zara", 19]
  ]
}]

这是一个带有解决方案的代码片段(使用原生 JavaScripthttps://jsfiddle.net/mhhqj1nc/1/

var data = [
  {
    "data" : [
          {
            "month" : 1,
             "name" : "Alex",
             "sum" : 20
          }
      ]  
  },
  {
    "data" : [
          {
            "month" : 2,
             "name" : "Zara",
             "sum" : 18
          },
          {
            "month" : 2,
            "name" : "Zara",
            "sum" : 19
          }
      ]  
  }];

var newdata = [];

for(var i=0; i<data.length; i++){
  newdata.push({data: []});
  for(var j=0; j<data[i].data.length; j++){
    var keys = Object.keys(data[i].data[j]);
    var temp = [];
    for(var k in keys){
      temp.push(data[i].data[j][keys[k]]);
    }
    newdata[i].data.push(temp);
  }
}

console.log(JSON.stringify(newdata));

希望这能对你有所帮助。

谢谢您的回答,但我尝试在filename.js中运行它,它返回$未定义。我错了吗? - jane
@jane 你忘记添加jQuery库文件了。在头部区域添加<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> - Shiladitya
我使用node.js,尝试var jquery = require('jquery');但它返回$未定义。 - jane
请再次帮我一下,谢谢。https://stackoverflow.com/questions/45952057/how-to-convert-data-table-to-json-in-javascript - jane

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