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


83

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

我该如何实现?


1
作弊->string.split(',')
adeneo

1
@adeneo他想要数组数组,用您的方法将只是一个数组
salexch 2013年

Answers:


82
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(像一个哈希表)
user1960311 2013年

@ user1960311这就是您现在拥有的
Ian

56

如果您使用格式正确的JSON字符串,则应该可以

var as = JSON.parse(jstring);

通过AJAX传输数组时,我总是这样做。


3
JSON.parse()+1。目前,它具有广泛的浏览器支持:caniuse.com/json
Siliconrockstar 2013年

15
这似乎返回一个对象,但不是数组。对 ?
Feru

2
它将返回您序列化的任何对象或对象集合。
aggaton

IMO对此表示了较满的回答。
simhumileco

30

假设您有:

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

您可以通过以下方式获取值:

Object.values(j)

输出:

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

7
谁读这本书...改用Object.values
Nico Van Belle


15

这将解决问题:

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]]
*/

2

您可以这样将对象项插入数组

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


-7

就这么简单!

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

1
这样就形成了一个数组,其中包含一个对象(json数据对象)。
米卡·桑德兰

@ Shivam,觉得有帮助吗?
CCC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.