Каковы различия между этими двумя классами?
Если кто-то использует библиотеку Gson, предпочтительнее ли использовать com.google.json.JsonObject
вместо org.json.JSONObject
?
Кто-нибудь может перечислить плюсы и минусы этих двух вариантов?
Каковы различия между этими двумя классами?
Если кто-то использует библиотеку Gson, предпочтительнее ли использовать com.google.json.JsonObject
вместо org.json.JSONObject
?
Кто-нибудь может перечислить плюсы и минусы этих двух вариантов?
Ниже приведены основные отличия:
1) GSON может использовать определение объекта для непосредственного создания объекта нужного типа. JSONObject необходимо анализировать вручную.
2) org.json — это простой древовидный API. Его самая большая слабость заключается в том, что он требует загрузки всего документа JSON в строку, прежде чем вы сможете его проанализировать. Для больших документов JSON это может быть неэффективно.
3) Безусловно, самой большой слабостью реализации org.json является JSONException. Просто неудобно размещать блок try/catch вокруг всех ваших вещей JSON.
4) Gson — лучший API для парсинга JSON на Android. Он имеет очень маленький двоичный размер (менее 200 КиБ), выполняет быструю привязку данных и имеет простой и удобный API.
5) GSON и Jackson — самые популярные решения для управления данными JSON в мире java.
На рынке доступно множество реализаций JSON, и большинство из них имеют открытый исходный код. Каждый из них имеет определенные преимущества и недостатки.
Google GSON нажмите для просмотра официальных документов
Джексон нажмите для просмотра официальных документов
Некоторые сравнительные блоги щелкните здесь блоги1, блог2
Я лично провел тест сериализации и десериализации, используя GSON vs Jackson vs Simple JSON.
Я экспериментировал с файлом json размером 456 КБ на реальном устройстве Pixel 3 Android 11. Мне нужно создать файл резервной копии из базы данных. Модель имеет 3 объекта с отношениями «один ко многим»: Note, Item, Alarm.
Note -> fields and List<Item>.
Item -> fields and List<Alarm>.
Alarm -> fields
Serialization result:
gson -> 75ms; org.json -> 63ms
gson -> 83ms; org.json -> 67ms
gson -> 73ms; org.json -> 62ms
Как видите, файл org.json для Android по умолчанию работает быстрее, чем GSON. Если у вас есть время создать сопоставление для вашей модели, я рекомендую использовать файл org.json по умолчанию. Если вы хотите создать json быстрее, чем gson, но проще, чем org.json, попробуйте использовать moshi или, возможно, kotlinx-сериализацию.