Olaf-06
@Olaf-06
Студент

Как работать с большими json файлами, которые получаются по запросу в Андроид приложении?

Меня попросили разработать тестовое приложение, которое бы использовало API яндекс расписания. Выглядеть оно должно вот так:
66f15df8edc7a736412867.png

Я начал изучать саму апишку (https://yandex.ru/dev/rasp/doc/ru/reference/schedu...). Чтоб получить расписания рейсов, которые идут от одного города к другому, нужно использовать не сами названия городов в запросе, а коды поселений. Потом я увидел запрос у Яндекса (https://yandex.ru/dev/rasp/doc/ru/reference/statio...), при помощи которого мы получаем json файл в 40мб, в котором содержатся коды всех поселений, причём не только России, а у одной России только 150 тысяч поселений. Не подскажете, как с этим работать? Создать заранее Map на 150 тысяч поселений, который возвращает код поселения, а потом обращаться к нему в зависимости от того, какой город впишет пользователь? Или есть какой-то иной способ? А если выбрать тот метод, который я описал, то как сделать так, чтоб не вручную вписывать все 150 тысяч городов, а автоматизировать?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, не map, а БД. В момент ввода пользователем города, ходить в БД, по имени города получать код и с ним делать запрос к расписанию. Табличку в БД лучше заполнить заранее нужными кодами, чтобы у свежеустановленного приложения сразу были данные, пусть даже не самые актуальные. Во-вторых, сделать фоновую задачу, которая будет периодически делать запрос к API Яндекса для обновления данных по кодам городов в БД. В-третьих, чтобы не жрать память мобильника, для парсинга 40-метрового файла использовать что-нибудь вроде Jackson Streaming API.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
В Андроиде насколько я помню есть API для работы с SQLite БД. Это в тех случаях
когда тебе надо экономить память но и работать с данными тоже надо.
Можно попробовать 1 раз скачать список станций и считая его достаточно
стационарным - положить в БД
и потом делать с ним joins из других запросов.
Ответ написан
Комментировать
402d
@402d
начинал с бейсика на УКНЦ в 1988
Задача тестовая.
И первый подтест вы провалили.
Справочник Название места отправления/прибытия в код условно постоянный.
Здесь его можно зашить в приложение. А значит потребуются знания о преднаселении пустой базы данных и создания миграций (новый/удален населенный пункт).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы