Làm cách nào để chuyển đổi đối tượng JSON sang mảng JavaScript?


83

Tôi cần chuyển đổi chuỗi đối tượng JSON thành một mảng JavaScript.

Đối tượng JSON này của tôi:

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

Và tôi muốn có:

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

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

Làm thế nào tôi có thể đạt được điều này?


1
Gian lận ->string.split(',')
adeneo

1
@adeneo ông muốn mảng trong mảng, với phương pháp của bạn nó sẽ chỉ là một mảng
salexch

Câu trả lời:


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/


Tôi muốn một cái gì đó như thế này: 2013/01/21 ==> 1 2013/01/22 ==> 7 (như một Hashtable)
user1960311

@ user1960311 Đó là những gì bạn có bây giờ
Ian

56

Nếu bạn có một chuỗi JSON được định dạng tốt, bạn sẽ có thể làm

var as = JSON.parse(jstring);

Tôi làm điều này mọi lúc khi chuyển các mảng qua AJAX.


3
+1 cho JSON.parse (). Tại thời điểm này nó có hỗ trợ trình duyệt rộng: caniuse.com/json
siliconrockstar

15
Điều này dường như trả về một Đối tượng nhưng không trả về mảng. Đúng ?
Feru

2
Nó sẽ trả về bất kỳ đối tượng nào hoặc tập hợp các đối tượng mà bạn đã tuần tự hóa.
aggaton

IMO máy chủ tốt hơn này sau đó hoạt động một.
simhumileco

30

Giả sử bạn có:

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

Bạn có thể nhận các giá trị với:

Object.values(j)

Đầu ra:

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

7
Bất cứ ai đọc điều này ... Hãy sử dụng Object.values thay thế!
Nico Van Belle


15

Điều này sẽ giải quyết vấn đề:

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

Hoặc sử dụng phương thức Object.entries () :

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

Trong cả hai trường hợp, đầu ra sẽ là:

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

2

Bạn có thể chèn các mục đối tượng vào một mảng như sau

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


-7

Đơn giản như thế này!

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

1
Điều đó tạo nên một mảng có một đối tượng bên trong nó (đối tượng dữ liệu json).
Mika Sundland

@ Shivam, thấy hữu ích không?
CCC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.