Как преобразовать объект JSON в массив JavaScript
Мне нужно преобразовать строку объекта 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
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/
Ответ 2
Если у вас хорошо сформированная строка JSON, вы должны иметь возможность делать
var as = JSON.parse(jstring);
Я делаю это все время при передаче массивов через AJAX.
Ответ 3
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
Ответ 4
Предположим, что у вас есть:
var j = {0: "1", 1: "2", 2: "3", 3: "4"};
Вы можете получить значения с помощью:
Object.keys(j).map(function(_) { return j[_]; })
Вывод:
["1", "2", "3", "4"]
Ответ 5
Это решит проблему:
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]]
*/
Ответ 6
Вы можете вставлять элементы объекта в массив, как это
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);