2010-03-23 4 views
9

Я знаю, что у Android есть парсер JSON, запеченный, но мне было интересно, стоит ли использовать что-то, предлагающее лучшую производительность (например, Jackson - см. http://jackson.codehaus.org/)? Кто-нибудь пробовал это?Замените стандартный парсер Android JSON для лучшей производительности?

+0

Я никогда не имел проблем с скоростью JSON парсер Android это stream json parser. У меня даже есть файл JSON размером 41kb в одном из моих приложений, и он загружается на пару сотен миллисекундов в G1 (это просто нормально, так как его нужно запускать только один раз, когда приложение загружается). –

+0

Абсолютная скорость разговоров вполне может быть приемлемой. По-прежнему полезно учитывать, что на обычных настольных процессорах скорость разбора JSON составляет порядка десятков мегабайт - файл 41 kb будет выполнен за миллисекунду или около того.Даже при более медленных процессорах, которые система Android часто имеет, сто миллисекунд довольно медленный, относительно быстрых альтернатив. Итак, правильный инструмент для работы. Для случайного использования (например, чтение в файле конфигурации при запуске) встроенные обработчики обычно достойны. По-прежнему полезно знать, что есть возможности для улучшения, если этого требуют требования к использованию. – StaxMan

ответ

7

Ну, вот couple из links, сравнивая производительность Jackson JSON с существующими JSON, SAX и протоколами. По словам автора, Джексон быстрее SAX или встроенного JSON и примерно равен протокольным буферам. Эта последняя часть звучит немного подозрительно, но, несмотря на это, безусловно, Джексон работает на Android и может стоить каких-то экспериментов.

Я не проверял размер JAR. Если он огромен, если вы не умираете за дополнительную производительность JSON, это может не стоить космического удара.

+0

Да, размер файла определенно в моем списке возможных ограничений. Я думаю, если бы я пережевывал много JSON в моем приложении, возможно, стоит добавить Джексона, но теперь я буду придерживаться стандартного JSON. – Eno

4

Поздний ответ, но он все еще может помочь. Я использую Jackson для разбора JSON из Twitter, а также сохраняю Maps в базе данных. Картирование данных в Джексоне просто замечательно. Возможность сопоставить JSON напрямую с объектом является удивительной и делает все намного более чистым.

Даже если вы просто разбираете сопоставление данных простых ответов, вы можете сделать свой код более чистым (и более эффективным). Для меня это находчивость, что мне не нужно писать логику разбора для каждого типа функции api Twitter.

+0

Спасибо за эту обратную связь - отлично, если понадобится другой инструмент в сундуке. – Eno

0

Просто еще один взгляд на эти синтаксические анализаторы. Я просматривал Google IO на 2009 год, и есть действительно хорошие разговоры об эффективном использовании батареи для разработчиков приложений.

Вот ссылка на этот разговор: link

Теперь, как в ток встроенного батюшкой для андроида является дерево основе, и они должны быть неэффективны, когда речь идет о жизни батареи. Кто-нибудь действительно изучил это.

Чтение этой дискуссии кажется, что парсер Джексона, кажется, побеждает во всем. Его почти одинаково быстро, если не больше, чем встроенный, а также его Event/Stream, в отличие от дерева, которое лучше с точки зрения использования батареи.

Просто, хотя я хотел поделиться и получить некоторые мнения по этому поводу.

0

Я использую jackson json для реализации моего приложения для Android, которое общается с сервером через json-rpc. Мне нравится использовать его для сериализации/десериализации json-rpc-запросов и ответов и объектов для передачи данных. Я использую 2.0 версию Jackson-json. Я поместил в свой путь сборки два баночки: jackson-databind-2.0.0.jar, jackson-core-2.0.0.jar и jackson-annotations-2.0.0.jar.

На стороне примечания: Есть ли реализация json-rpc для андроида. отдельный json-rpc и http-трафик будут хорошими. У меня много googled, bu не нашел хорошего генератора json-rpc, json serializer/deserializer и для транспорта я поеду с андроидным запросом.

5

Поскольку API 11, есть в Android

+0

Спасибо! Я не заметил, что это было, так как это не было в пакете JSON – christophercotton

Смежные вопросы