Wie konvertiere ich ein JSON-Objekt in ein JavaScript-Array?

83

Ich muss die JSON-Objektzeichenfolge in ein JavaScript-Array konvertieren.

Dies ist mein JSON-Objekt:

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

Und ich möchte haben:

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

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

Wie kann ich das erreichen?

user1960311
quelle
1
Betrug ->string.split(',')
Adeneo
1
@adeneo er will Array in Array, mit Ihrer Methode wird es nur ein Array sein
salexch

Antworten:

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

salexch
quelle
Ich möchte so etwas: 2013-01-21 ==> 1 2013-01-22 ==> 7 (wie eine Hashtabelle)
user1960311
@ user1960311 Das ist, was Sie jetzt haben
Ian
56

Wenn Sie eine wohlgeformte JSON-Zeichenfolge haben, sollten Sie dazu in der Lage sein

var as = JSON.parse(jstring);

Ich mache das die ganze Zeit, wenn ich Arrays über AJAX übertrage.

Aggaton
quelle
3
+1 für JSON.parse (). Zu diesem Zeitpunkt hat es breite Browser-Unterstützung: caniuse.com/json
siliconrockstar
15
Dies scheint ein Objekt, aber kein Array zurückzugeben. Richtig ?
Feru
2
Es wird jedes Objekt oder jede Sammlung von Objekten zurückgegeben, die Sie serialisiert haben.
Aggaton
IMO dieser bessere Ansver als einer.
Simhumileco
30

Angenommen, Sie haben:

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

Sie könnten die Werte erhalten mit:

Object.values(j)

Ausgabe:

["1", "2", "3", "4"]
mvallebr
quelle
7
Wer dies liest ... Verwenden Sie stattdessen Object.values !
Nico Van Belle
20
function json2array(json){
    var result = [];
    var keys = Object.keys(json);
    keys.forEach(function(key){
        result.push(json[key]);
    });
    return result;
}

Siehe diese vollständige Erklärung: http://book.mixu.net/node/ch5.html

Roger Garzon Nieto
quelle
6
Dadurch bleiben die Schlüssel nicht erhalten.
Jake N
15

Dies wird das Problem lösen:

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

Oder verwenden Sie die Object.entries () -Methode:

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

In beiden Fällen wird Folgendes ausgegeben:

/* output: 
[['2013-01-21', 1], ['2013-01-22', 7]]
*/
Rakesh Sharma
quelle
2

Sie können Objektelemente wie folgt in ein Array einfügen

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

NuOne
quelle
-7

So einfach ist das!

var json_data = {"2013-01-21":1,"2013-01-22":7};
var result = [json_data];
console.log(result);
CCC
quelle
1
Das macht ein Array mit einem Objekt darin (dem JSON-Datenobjekt).
Mika Sundland
@ Shivam, fand es hilfreich?
CCC