简体   繁体   English

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

[英]How to convert JSON to Array in Javascript

I want to convert JSON to Array and I return value by : console.log(data); 我想将JSON转换为Array,并通过以下方式返回值: console.log(data);

value is : 值是:

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

so, I converted to JSON by: 所以,我通过以下方式转换为JSON:

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

value is : 值是:

 [ { "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 : 我想转换为Array:

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

How to convert ? 如何转换?

您可以简单地尝试以下方法:

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

The syntax of your expected output is incorrect as you cant have object without key value pair. 预期输出的语法不正确,因为您不能有没有键值对的对象。

you can have your output as 您可以将输出作为

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

here is the solution considering above output 这是考虑上述输出的解决方案

 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)); 

NOTE: Solution can be simplified if you are Ok to use ES6 in your code. 注意:如果可以在代码中使用ES6,则可以简化解决方案。

Here you go with a solution (with jQuery ) https://jsfiddle.net/mhhqj1nc/ 在这里,您可以找到一个解决方案(使用jQueryhttps://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> 

Your expected output is invalid . 您的预期输出 无效

Expected output should be 预期输出应为

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

Here you go with a solution (with vanilla JavaScript ) https://jsfiddle.net/mhhqj1nc/1/ 在这里,您可以找到一个解决方案(使用香草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)); 

Hope this will help you. 希望这会帮助你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM