如何将JSON对象转换为JavaScript数组

时间:2013-01-25 18:46:56

标签: javascript json

我需要将JSON对象字符串转换为JavaScript数组。

这是我的JSON对象:

{"2013-01-21":1,"2013-01-22":7}

我希望:

var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');

data.addRows([
    ['2013-01-21', 1],
    ['2013-01-22', 7]
]);

我怎样才能做到这一点?

7 个答案:

答案 0 :(得分:49)

var json_data = {"2013-01-21":1,"2013-01-22":7};
var result = [];

for(var i in json_data)
    result.push([i, json_data [i]]);


var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows(result);

http://jsfiddle.net/MV5rj/

答案 1 :(得分:36)

如果你有一个结构良好的JSON字符串,你应该可以

var as = JSON.parse(jstring);

我通过AJAX传输数组时一直这样做。

答案 2 :(得分:11)

function json2array(json){
    var result = [];
    var keys = Object.keys(json);
    keys.forEach(function(key){
        result.push(json[key]);
    });
    return result;
}

请参阅此完整说明:http://book.mixu.net/node/ch5.html

答案 3 :(得分:9)

假设你有:

var j = {0: "1", 1: "2", 2: "3", 3: "4"};

您可以使用以下内容获取值:

Object.keys(j).map(function(_) { return j[_]; })

输出:

["1", "2", "3", "4"]

答案 4 :(得分:8)

这将解决问题:

const json_data = {"2013-01-21":1,"2013-01-22":7};

const arr = Object.keys(json_data).map((key) => [key, json_data[key]]);

console.log(arr);

/* output: 
[ [ '2013-01-21', 1 ], [ '2013-01-22', 7 ] ]
*/

答案 5 :(得分:1)

您可以以此将对象项插入数组

let obj = {
  '1st': {
    name: 'stackoverflow'
  },
  '2nd': {
    name: 'stackexchange'
  }
};
 
 let wholeArray = Object.keys(obj).map(key => obj[key]);
 
 console.log(wholeArray);

答案 6 :(得分:0)

就这么简单!

var json_data = {"2013-01-21":1,"2013-01-22":7};
var result = [json_data];
console.log(result);