Оптимизация парсинга JSON на Android - PullRequest
4 голосов
/ 12 июля 2011

Я разрабатываю приложение для Android, которое должно получать значительный объем данных из фида JSON. Этот канал представляет собой однострочный файл JSON, весит около 400 ko и содержит примерно 10 массивов, которые мне нужно получить.

Для этого я использую библиотеку JSON для Android, и вывод работает хорошо, но для вычислений требуются целые годы (ну, примерно 30 секунд). Шаг загрузки выполняется быстро, это создание объектов JSON, которые кажутся очень длинными. Вот мои шаги (удаление блоков try / catch и т. Д.).

JSONObject feed = new JSONObject(big_string_from_feed);

JSONArray firstArray = feed.getJSONArray("key1");
JSONArray secondArray = feed.getJSONArray("key2");

[...]

И после того, как я пройдусь по всем своим массивам, чтобы получить каждый элемент следующим образом:

for (int currentIndex =0;currentIndex<firstArray.length();currentIndex++){
    JSONObject myObject = firstArray.getJSONObject(currentIndex);
    [....]
}

Что-то не так в том, как я это делаю? Есть ли лучший способ сделать это?

Заранее большое спасибо.

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

Если производительность является проблемой, используйте Джексона.Смотрите https://github.com/eishay/jvm-serializers/wiki для результатов производительности.(Эти результаты должны быть обновлены в ближайшее время, чтобы включить ручную обработку / обработку строк дерева Джексона, которая будет иметь производительность где-то между ручной обработкой Джексоном и обработкой строк данных базы данных Джексона. Ручная обработка / обработка строк дерева - это подход, продемонстрированный в первоначальном вопросе.)

0 голосов
/ 12 июля 2011

Посмотрите на json-simple (см. http://code.google.com/p/json-simple).. Он обеспечивает синтаксический анализ потоков JSON в стиле SAX и работает быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...