Чтобы получить USD -> 30d (= 5.2016), вам нужно сделать следующее:
data["USD"]["30d"]
Вы не можете сказать data[0]
, потому что использование числового индекса (как правило) применимо только к массивам иу вас нет массива.У вас есть объект с двумя свойствами, «USD» и «GBP», и у каждого из этих свойств есть объект со свойствами «7D», «30d», «24h».
Более подробно:
JavaScript массив литеральные объявления используют квадратные скобки, которые содержат просто список элементов, например:
var myArray = ["a","b","c"];
Но object литеральные объявления используют фигурныескобки с парами ключ-значение, как в JSON, который вы указали в своем вопросе, или вот более простой пример:
var myObject = { "key1" : "value1", "key2" : "value2", "key3" : "value3" };
«Хитрость» заключается в том, что после определения массивов и объектов доступ осуществляется с помощью квадратной скобки, но массивы используют числовые индексы, а объекты используют строковые ключи.
Вы также можете использовать точечную запись, как вы пытались сделать, но только для свойств с именем ключа, которое соответствует правилам допустимых идентификаторов JavaScript, т. е.не начинаются с цифры, без пробелов, не зарезервированного слова и т. д. Эти ограничения применяются только к точечной нотации, поэтому, если вы используете нотацию в квадратных скобках, вы можетеиметь пробелы, числа и т. д.
Можно вложить массивы и объекты, включая смешивание двух, но в вашем конкретном случае у вас просто был объект, содержащий два других объекта, без массивов.
Так что data["USD"]
даст вам {"7d": "4.4549", "30d": "5.2016", "24h": "4.1373"}
.
data["GBP"]
даст вам {"7d": "2.9706", "30d": "3.2620", "24h": "2.5463"}
.
Вы сузите его до нужного вам индивидуального значения с помощью data["USD"]["30d"]
.
РЕДАКТИРОВАТЬ: Ваш запрос $.getJSON
не будет работать из-за политики Ajax с тем же происхождением, т. Е. Вам разрешено только делать запросы JSON в тот же домен, что и текущая страница.
Вы можете попробовать JSONP - который jQuery поддерживает практически без усилий с вашей стороны: вам просто нужно добавить ?callback=?
в конец URL-адреса - за исключением того, что JSONP требует поддержки на сервере и выглядитбиткойны не поддерживают его.
Таким образом, самый простой способ продвинуться вперед - это получить данные в вашем коде на стороне сервера, где политика того же происхождения не будет вам мешать.