Jackson по сравнению с [закрытым] Gson

После поиска некоторых существующих библиотек для JSON я наконец закончил с этими двумя:

  • Jackson
  • Google GSon

Я немного неравнодушен к GSON, но слово в сети - то, что GSon страдает от определенной астрономической проблемы производительности (по состоянию на сентябрь 2009).

Я продолжаю свое сравнение; тем временем я ищу справку, чтобы решиться.

352
задан Lance Roberts 22 August 2013 в 10:23
поделиться

2 ответа

Я провел это исследование на прошлой неделе и в итоге получил те же 2 библиотеки. Поскольку я использую Spring 3 (который принимает Jackson в своем Json представлении по умолчанию 'JacksonJsonView'), для меня было более естественно сделать то же самое. Эти 2 либы практически одинаковы... в конце они просто отображаются на json-файл! :)

В любом случае, как вы сказали, Jackson имеет + в производительности, а это очень важно для меня. Проект также довольно активен, как вы можете видеть из их веб-страницы, и это тоже очень хороший знак.

116
ответ дан 23 November 2019 в 00:24
поделиться

Джексон и Гсон являются наиболее полными пакетами Java JSON в отношении поддержки фактической привязки данных; многие другие пакеты предоставляют только примитивную привязку Map / List (или эквивалентную модель дерева). Оба имеют полную поддержку универсальных типов, а также достаточную настраиваемость для многих распространенных случаев использования.

Поскольку я лучше знаком с Джексоном, вот некоторые аспекты, в которых, как мне кажется, Джексон имеет более полную поддержку, чем Gson (извиняюсь, если я пропускаю функцию Gson):

  • Обширная поддержка аннотаций; включая полное наследование и расширенные «смешанные» аннотации (связывайте аннотации с классом для случаев, когда вы не можете напрямую добавить их)
  • Потоковое (инкрементное) чтение, запись для сверхвысокой производительности (или с ограничением памяти) сценарии использования; можно смешивать с привязкой данных (привязать поддеревья) - РЕДАКТИРОВАТЬ : последние версии Gson также включают потоковый считыватель
  • Модель дерева (доступ в стиле DOM); может конвертировать между различными моделями (tree <-> java object <-> stream)
  • Может использовать любые конструкторы (или статические фабричные методы), а не только конструктор по умолчанию.
  • Поле и доступ к геттеру / сеттеру (использовались только более ранние версии gson поля, это могло быть изменено)
  • Встроенная поддержка JAX-RS
  • Взаимодействие: также можно использовать аннотации JAXB, есть поддержка / обходные пути для общих пакетов (joda, ibatis, cglib), языки JVM ( groovy, clojure, scala)
  • Возможность принудительной обработки статических (объявленных) типов для вывода
  • Поддержка десериализации полиморфных типов (Jackson 1.5) - может сериализовать И десериализовать такие вещи, как List правильно (с дополнительной информацией о типе)
  • Интегрированная поддержка двоичного содержимого (base64 в / из строк JSON)
83
ответ дан 23 November 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: