Преобразование массива из файла JSON в массив Javascript не работает

#javascript #arrays #json

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

Вопрос:

несмотря на то, что я прочитал много связанных статей по этой теме в stackoverflow, я не могу понять, что я здесь делаю не так.

Итак, у меня есть файл json (peak.json) с несколькими объектами и одним массивом (audiopeakdata). Это выглядит так:

 {"version": 2, "channels": 1, "data": [0.1, 0.3, 0,3 ... 0.1]}
  

Теперь я хочу прочитать массив данных из файла json и хочу проанализировать его в массив javascript:

 var array = [];
$.getJSON('peak.json', function(data) { 
    array = data.data;
}); 
console.log(array);
  

Но журнал консоли показывает, что массив пуст — как это может быть?

Спасибо за вашу помощь

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

1. Данные корректно работают с JSON.parse

2. проверьте вкладку сеть и поделитесь точными данными

3. Это потому, что вы регистрируете консоль вне обратного вызова

4. Попробуйте array.push(data) .

Ответ №1:

Это потому, что вы пытаетесь вернуть данные из a callback , которые не работают. Используйте async/await :

 async function getData() {
  var data = await $.getJSON('peak.json')
  var array = data.data;
  console.log(array);
}
getData();
  

Или переместите свой console.log внутренний обратный вызов:

 var array = [];
$.getJSON('peak.json', function(data) { 
  array = data.data;
  console.log(array);
});