Преобразование JSON в обычный массив JavaScript

#javascript #jquery #arrays #json

#javascript #jquery #массивы #json

Вопрос:

Как я могу загрузить обычный массив из ответа JSON следующим образом:

 {"project":"8","powerline":"188.396496","road":"7.876766","cost":"69885005.45"}
  

Для

 var cars = [8, 188.396496, 7.876766, 69885005.45];
  

Я уже пробовал что-то подобное:

 req.done(function(data) {
var cars = JSON.parse(data);
});
  

но он не выполняет свою работу.

Комментарии:

1. Привет, камеш, это объект jquery json

2. Я полагаю, что OP забыл добавить node.js в качестве тега

Ответ №1:

Вы можете просто запустить for..in цикл, подобный этому. и продолжайте помещать значения в новый массив.

 var obj = {
    "project" : "8",
    "powerline" : "188.396496",
    "road" : "7.876766",
    "cost" : "69885005.45"
}

var arr = [];
for (var key in obj) {
    var val = parseFloat("0"   obj[key]);
    arr.push(val)
}
  

Комментарии:

1. Привет, раджуб, спасибо за ответ, но, как я уже упоминал, я получаю JSON из запроса Ajax, так как я могу использовать ваш подход?

2. Вы хотите извлечь array вместо JSON из ajax? тогда придется делать на стороне сервера

3. кроме того, он загружает ключи в виде строки в массив. Есть ли какой-либо способ принудительно заполнить их числами типа 8 вместо «8»

Ответ №2:

Вы можете манипулировать объектом JSON как массивом, пожалуйста, попробуйте этот способ

 req.done(function(data) {
 var cars = $.map(JSON.parse(data), function(value, index){
   return i;
});
 console.log(cars);
});
  

Комментарии:

1. Привет, Гириш, спасибо за ответ, но это не работает,

Ответ №3:

Это потому, что вы получаете объект при вызове JSON.parse . Вы можете выполнить следующее, чтобы получить значения без ключей:

 req.done(function (data) {
    var jsonData = JSON.parse(data),
        cars = []

    for (var key in jsonData) {
        cars.push(jsonData[key])
    }
})