#javascript #json #ajax
#javascript #json #ajax
Вопрос:
у меня есть один api . мои данные в моем коде имеют 2 раздела
"Meta Data": {…}
"Time Series (Daily)": {…}
я использую этот код для получения данных json и использования в моей диаграмме
$.ajax({
url: urls,
dataType: 'json',
contentType: "application/json",
success: function (data) {
debugger;
// split the data set into ohlc and volume
var ohlc = [],
volume = [],
dataLength = data.length, // but this code is undefiend
как я могу получить значения «Временных рядов (ежедневно)»?
спасибо за прочтение майского решения
Комментарии:
1. предполагая, что и «Метаданные», и «Временные ряды (ежедневно)» являются ключами в возвращаемом объекте, попробуйте
console.log(data['Time Series (Daily)'])
и посмотрите, те ли это данные, которые вы ожидаете. В противном случае обычно предпочтительнее нормализовать имена с помощью змеиной или верблюжьей оболочки.2. да, я могу видеть значения по console.log(data[‘Временные ряды (ежедневно)’]), но я не могу использовать data[‘Временные ряды (ежедневно)’].length
3. Потому что вы тоже показываете его как объект, а не как массив. Объектные литералы не имеют длины
Ответ №1:
Учитывая состояние данных, которые вы нам предоставили, правильный способ получить данные из конечной точки API здесь — иметь
$.ajax({
url: urls,
dataType: 'json',
contentType: "application/json",
success: function(data) {
debugger;
// split the data set into ohlc and volume
var ohlc = [],
volume = [],
dataLength = data['Time Series (Daily)'].length,
// rest of variable definitions
});
Я бы рекомендовал, однако, чтобы вы уделили время либо snake case ( some_property_here
), либо camel case ( somePropertyHere
), чтобы вам не приходилось использовать data['string with spaces syntax']