Как обрабатывать огромный массив JSON?

Это очень просто:

  1. Перейдите в workbench MySQL и найдите Database> Manage Connections
  2. , вы увидите список подключений. Нажмите на соединение, к которому вы хотите подключиться.
  3. Вы увидите вкладки о соединении, удаленном управлении, системном профиле. Нажмите на ссылку подключения.
  4. ваш URL-адрес jdbc:mysql://<hostname>:<port>/<dbname>?prop1 и т. Д., Где <hostname> и <port> указаны на вкладке подключения. В основном это будет localhost: 3306. <dbname> будет найден в Вкладка «Профиль системы» в «Имя службы Windows». По умолчанию в основном будет MySQL5 <x>, где x - номер версии, например. 56 для MySQL5.6 и 55 для MySQL5.5 и т. Д. Вы можете также указать собственное имя службы Windows.
  5. Построить URL-адрес соответственно и установить URL-адрес для подключения.
2
задан Fantômas 18 January 2019 в 12:18
поделиться

3 ответа

Самым простым и наиболее часто используемым подходом к этой проблеме является использование нумерации страниц . Проще говоря - вы запрашиваете сначала 50 или 100 объектов и отображаете их, затем следующий и так далее. Концепция заключается в том, что обычно конечному пользователю не нужны все 5000 объектов одновременно, поэтому приемлемо получать их при необходимости.

Если по каким-то бизнес / логическим причинам вам необходимо обрабатывать все 5000 объектов одновременно, вы можете подумать о другом формате связи - например, protobuf или XML с SAX-парсером .

В обоих вышеупомянутых случаях вам нужно настроить остальные API, которые обслуживают данные вместе с клиентом. Если у вас нет контроля над серверной частью, вы можете попробовать использовать Android Profiler , чтобы точно определить, какие части синтаксического анализа являются самыми медленными, и оптимизировать их на стороне клиента (android).

0
ответ дан hris.to 18 January 2019 в 12:18
поделиться

Прежде всего, вы должны выполнить все эти задачи в фоновом потоке, и при разборе, если это возможно, используйте HashMap<Key,Value>, у него есть методы, подобные hashmap.get("key"), которые будут получать значения без использования цикла for, или вы также можете использовать arraylist из которого вы также можете получить значения без использования цикла for.

0
ответ дан theanilpaudel 18 January 2019 в 12:18
поделиться

Вы можете использовать фоновый поток, который легко реализовать с помощью AsynTask, написать свой дорогой код внутри doInBackground

private static class BackgroundTask extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
    JSONArray list = new JSONArray(EntityUtils.toString(response.getEntity()));
}

@Override
protected void onPostExecute(String html) {
}
}

Также попробуйте проанализировать json с чем-то другим, например, gson наверняка намного быстрее тип данных.

Feed feed = getGson().fromJson(json, Feed.class);

В любом случае, не рекомендуется возвращать 5000 объектов одновременно, ваш API должен быть улучшен, чтобы обрабатывать нумерацию страниц и возвращать от 10 до 100 элементов за запрос в зависимости от ваших потребностей.

0
ответ дан Minas 18 January 2019 в 12:18
поделиться
Другие вопросы по тегам:

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