#android #json #gson
#Android #json #gson
Вопрос:
Я не в состоянии понять разницу между JSONObject и GSON для синтаксического анализа строк JSON в Android.
Кто-нибудь может объяснить?
Ответ №1:
GSON может использовать определение объекта для непосредственного создания объекта нужного типа. JSONObject необходимо проанализировать вручную. В этом главное отличие.
Ответ №2:
как говорили другие, это GSON
должно значительно упростить сопоставление JSON
с POJO
, но последняя GSON
версия (как я пишу, 2.2.2) имеет серьезные проблемы с последней версией Android API 17 (Android 4.2).
Проверьте это для получения дополнительной информации: http://code.google.com/p/google-gson/issues/detail?id=496
Если вы сейчас делаете новый проект и хотите, чтобы он был совместим с Android 4.2, либо используйте более старый GSON
(1.7.1 отлично работает с Android 4.2, но работает медленнее), либо найдите другое решение.
Ответ №3:
То, что Tim сказано, также верно,
Gson — лучший API для синтаксического анализа JSON на Android. Он имеет очень маленький двоичный размер (менее 200 КБ), выполняет быструю привязку к данным и имеет простой в использовании API. Встроенные библиотеки JSON для Android также хороши. Вам следует использовать их, если вы мало используете JSON и вам не нужна привязка к данным.
Ответ №4:
На Android есть два JSON API:
org.json — это простой API в виде дерева. Его самая большая слабость заключается в том, что он требует, чтобы вы загрузили весь документ JSON в строку, прежде чем сможете его проанализировать. Для больших документов JSON это может быть неэффективно. http://developer.android.com/reference/org/json/package-summary.html
android.util.JsonReader / JsonWriter — это низкоуровневые потоковые API. Они эффективны, но не выполняют привязку к данным, поэтому вам нужно написать некоторый шаблонный код для их использования. Они доступны только в Android 3 . Для более ранних версий Android тот же API доступен автономно в пакете stream от Gson. http://developer.android.com/reference/android/util/JsonReader.html
JsonReader и JsonWriter от Gson являются производными от Android JsonReader и JsonWriter. Однажды я буквально скопировал и вставил их с Android в Gson и стараюсь синхронизировать по мере оптимизации того или иного.
Комментарии:
1. Безусловно, самым большим недостатком
org.json
реализации являетсяJSONException
. Просто не удобно размещатьtry/catch
блок вокруг всего вашего JSON-материала.2. Спасибо @aroth за добавление ценного комментария.