Jackson та Gson - це найповніший пакет Java JSON щодо фактичної підтримки зв’язування даних; багато інших пакунків лише прив'язують примітивну карту / список (або еквівалентну модель дерева). Обидва мають повну підтримку загальних типів, а також достатньо налаштованості для багатьох випадків загального використання.
Оскільки я більше знайомий з Джексоном, ось деякі аспекти, де я думаю, що у Джексона є більш повна підтримка, ніж у Gson (вибачте, якщо я пропускаю функцію Gson):
- Широка підтримка анотацій; включаючи повне успадкування та розширені анотації "сумішшю" (пов'язуйте анотації з класом для випадків, коли ви не можете їх безпосередньо додати)
- Потокове (додаткове) читання, запис для випадків використання ультрависокої продуктивності (або обмеженої пам'яттю); може поєднуватися з прив'язкою даних (зв'язувати піддерева ) - EDIT : останні версії Gson також включають в себе потоковий зчитувач
- Деревова модель (DOM-подібний доступ); може конвертувати між різними моделями (дерево <-> Java-об'єкт <-> потік)
- Можна використовувати будь-які конструктори (або статичні заводські методи), а не лише конструктор за замовчуванням
- Доступ до поля та геттера / сетеру (у попередніх версіях gson використовувались лише поля; це може бути змінено)
- Підтримка JAX-RS поза коробкою
- Інтероперабельність: може також використовувати анотації JAXB, має підтримку / робочі навколо для загальних пакетів (joda, ibatis, cglib), мови JVM (groovy, clojure, scala)
- Можливість примусити статичний (оголошений) тип обробки для виводу
- Підтримка десеріалізації поліморфних типів (Jackson 1.5) - може серіалізувати та дезаріалізувати такі речі, як List правильно (з додатковою інформацією про тип)
- Комплексна підтримка бінарного контенту (base64 до / від JSON Strings)