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

IT技术 javascript json
2021-01-21 13:58:27

我需要将 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]
]);

我怎样才能做到这一点?

6个回答
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/

我想要这样的东西:2013-01-21 ==> 1 2013-01-22 ==> 7(就像一个哈希表)
2021-04-01 13:58:27
@user1960311 这就是你现在拥有的
2021-04-11 13:58:27

如果你有一个格式良好的 JSON 字符串,你应该能够做到

var as = JSON.parse(jstring);

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

+1 为 JSON.parse()。在这一点上它有广泛的浏览器支持:caniuse.com/json
2021-03-17 13:58:27
这似乎返回一个对象而不是数组。对 ?
2021-03-25 13:58:27
它将返回您序列化的任何对象或对象集合。
2021-03-28 13:58:27
IMO 这个更好的 ansver 然后 actepted 一个。
2021-04-05 13:58:27

假设你有:

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

您可以通过以下方式获取值(几乎所有浏览器版本都支持):

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

或者干脆:

Object.values(j)

输出:

["1", "2", "3", "4"]
请记住,任何版本的 IE都不支持Object.values()
2021-03-15 13:58:27
IE 不支持任何东西与它兼容和不兼容真的很重要吗?
2021-03-27 13:58:27
谁读到这个……改用Object.values吧!
2021-04-05 13:58:27
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

这不会保留密钥。
2021-04-02 13:58:27

这将解决问题:

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

或者使用Object.entries()方法:

console.log(Object.entries(json_data));

在这两种情况下,输出将是:

/* output: 
[['2013-01-21', 1], ['2013-01-22', 7]]
*/
伟大的。但不适用于嵌套对象。var data = {"2013-01-21":1,"2013-01-22":7,"ab":{"x":1}}; 返回 [["2013-01-21",1],["2013-01-22",7],["ab",{"x":1}]]
2021-04-09 13:58:27