JSON nesnesini JavaScript dizisine nasıl dönüştürebilirim?


86

JSON nesne dizesini JavaScript dizisine dönüştürmem gerekiyor.

Bu benim JSON nesnem:

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

Ve sahip olmak istiyorum:

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

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

Bunu nasıl başarabilirim?


2
Hile ->string.split(',')
adeneo

2
@adeneo dizide dizi istiyor, sizin yönteminizle sadece bir dizi olacak
salexch

Yanıtlar:


86
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/


Bunun gibi bir şey istiyorum: 2013-01-21 ==> 1 2013-01-22 ==> 7 (bir hashtable gibi)
user1960311

@ user1960311 Şu anda sahip olduğunuz şey bu
Ian

57

İyi biçimlendirilmiş bir JSON dizeniz varsa, yapabilmelisiniz

var as = JSON.parse(jstring);

AJAX aracılığıyla dizileri aktarırken bunu her zaman yapıyorum.


3
JSON.parse () için +1. Bu noktada geniş bir tarayıcı desteğine sahiptir: caniuse.com/json
siliconrockstar

17
Bu bir nesne döndürüyor gibi görünüyor, ancak dizi değil. Sağ ?
Feru

2
Serileştirdiğiniz nesneyi veya nesne koleksiyonunu döndürür.
aggaton

IMO bu daha iyi cevap verdikten sonra harekete geçti.
simhumileco

33

Varsayalım ki:

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

Değerleri şu şekilde alabilirsiniz (neredeyse tüm tarayıcı sürümlerinde desteklenir):

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

ya da sadece:

Object.values(j)

Çıktı:

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

7
Bunu kim okursa ... Onun yerine Object.values kullanın!
Nico Van Belle

1
Unutmayın ki Object.values ​​() hiçbir IE
A Friend,


16

Bu sorunu çözecektir:

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

Veya Object.entries () yöntemini kullanarak :

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

Her iki durumda da çıktı:

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

3

Bir diziye nesne öğelerini şu şekilde ekleyebilirsiniz:

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


-6

Bu kadar basit!

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

1
Bu, içinde bir nesne bulunan bir dizi oluşturur (json veri nesnesi).
Mika Sundland

@ Shivam, faydalı buldunuz mu?
CCC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.