#json #swift #alpha-vantage
#json #swift #alpha-vantage
Вопрос:
Я пытаюсь извлечь данные из формата JSON API с использованием swift. Данные API имеют следующую структуру:
{
"Meta Data": {
"1. Information": "Intraday (5min) open, high, low, close prices and volume",
"2. Symbol": "IBM",
"3. Last Refreshed": "2020-08-20 19:05:00",
"4. Interval": "5min",
"5. Output Size": "Compact",
"6. Time Zone": "US/Eastern"
},
"Time Series (5min)": {
"2020-08-20 19:05:00": {
"1. open": "123.2000",
"2. high": "123.2000",
"3. low": "123.2000",
"4. close": "123.2000",
"5. volume": "204"
},
"2020-08-20 18:50:00": {
"1. open": "123.2000",
"2. high": "123.2000",
"3. low": "123.2000",
"4. close": "123.2000",
"5. volume": "100"
},
"2020-08-20 18:45:00": {
"1. open": "123.2000",
"2. high": "123.2000",
"3. low": "123.2000",
"4. close": "123.2000",
"5. volume": "100"
},
"2020-08-20 18:40:00": {
"1. open": "123.1500",
"2. high": "123.1500",
"3. low": "123.1500",
"4. close": "123.1500",
"5. volume": "100"
}
}
}
Вопрос:
Есть ли какой-либо способ получить только последнее (latest), например, два значения «Временных рядов»?
Моя подробная проблема: Приведенный выше пример упрощен всего до 4 значений. На самом деле он может иметь 50.000 значений. До сих пор моей единственной идеей было перенести все данные в словарь. Поскольку словарь не может быть отсортирован, мне пришлось затем создать из него отсортированный массив кортежей. Затем я должен выполнить итерацию по массиву и сохранить только первое x количество элементов. Поскольку существует 50.000 значений, этот процесс требует чрезвычайно много времени, энергии и производительности. Поэтому было бы лучше, если бы я нашел способ получить последнее x количество данных «на лету».
Комментарии:
1. Вы должны иметь возможность указать объем данных, которые вы извлекаете, с помощью параметра в вашем запросе. Проверьте документацию вашего API.
Ответ №1:
Вопрос: Есть ли какой-либо способ получить только последние, например, два значения «Временных рядов»?
Ответ: Нет.
Чтобы получить самую последнюю запись, вам в любом случае нужно получить полный набор данных.
Формат даты, который используется в качестве ключа словаря, можно сортировать. Получите ключи словаря, отсортируйте их по убыванию и получите значение для первого ключа.
Пожалуйста, ознакомьтесь с документацией API. Существует outputsize
параметр, который можно настроить для извлечения только последних 100 записей ( outputsize=compact
)
Комментарии:
1. «Возьмите ключи словаря, отсортируйте их по убыванию и получите значение для первого ключа». Это БОЛЬШАЯ ПОМОЩЬ! Спасибо.