Я использую синтаксический разбор JSON в приложении, которое я пишу. Большинство из того, что я сделал, уже реализовано с использованием встроенной в JSONObject библиотеки Android (это json-lib?).JSON: Джексон поток парсер - это действительно стоит?
JSONObject, похоже, создает экземпляры абсолютно всех в строке JSON ... даже если я не использую их все.
Мое приложение работает довольно хорошо, даже на G1.
Мой вопрос заключается в следующем: нужны ли скорости и памяти преимущества использования парсера потока, такого как Джексон, на все проблемы?
К беде, я имею в виду это: Насколько я могу судить, есть три отрицательные стороны использования Джексона вместо встроенного в библиотеке:
- Зависимость от внешней библиотеки. Это делает ваш .apk больше в конце. Не огромная сделка.
- Ваше приложение более хрупкое. Поскольку разбор не выполняется автоматически, он более уязвим для изменений текста JSON, которые он разбор (возможно, я ошибаюсь в этом).
- Написание кода для разбора JSON через анализатор потока является уродливым и утомительным.
Я не согласен с № 2. Если структура JSON изменяется неожиданным образом, вам действительно не повезло. –
Не верно в некоторых случаях .. например, добавление объекта в качестве значения в другой объект. Если вы не планируете его в парсинге вытягивания, он его выкинет, а с JSONObject он будет работать. Например: Изменение { "first_name": "Адам", "last_name": "Olsen" } к { "first_name": "Адам, " last_name: "Olsen", "phone_numbers": { "дом": "555-867-5309", "работа": "888-555-5555" }} бросить бы ваш парсер прочь в цикле, как: в то время как (синтаксический анализатор .nextToken()! = JsonToken.END_OBJECT) - В конце концов вы попадете END_OBJECT, где JSONObject будет разбирать его в порядке. – synic
Можно написать анализатор потока, который справляется с этим. Я считаю, что это то, что для ShipChildren (http://jackson.codehaus.org/1.5.0/javadoc/org/codehaus/jackson/JsonParser.html#skipChildren%28%29). –