352 votes

Jackson vs Gson

Après une recherche par le biais de certaines bibliothèques existantes pour JSON, j’ai enfin fini avec ces deux :

  • Jackson
  • Google GSon

Je suis un peu partial envers GSON, mais le mot sur le net, c’est que GSon souffre d’un certain de performances célestes question (à partir de Sept 2009).

Je poursuis ma comparaison ; en attendant, je cherche de l’aide pour me décider.

116voto

mickthompson Points 1991

J'ai fait cette recherche la semaine dernière et j'ai fini avec les 2 mêmes bibliothèques. Comme je suis en utilisant le Printemps 3 (qui adopte Jackson dans son défaut Json vueJacksonJsonView"), il est plus naturel pour moi de faire de même. Le 2 lib sont à peu près la même chose... à la fin, ils ont tout simplement la carte à un fichier json! :)

De toute façon, comme vous l'avez dit Jackson a un + dans la performance, ce qui est très important pour moi. Le projet est également très active comme vous pouvez le voir sur leur page web et c'est un très bon signe.

83voto

StaxMan Points 34626

Jackson et Gson sont les plus complets Java JSON paquets concernant les données réelles en charge de la liaison; de nombreux autres paquets de fournir des primitives de la Carte/Liste (ou équivalent modèle d'arbre) de liaison. Les deux ont un support complet pour les types génériques, ainsi, que suffisamment de possibilités de configuration pour de nombreux cas d'utilisation.

Depuis que je suis plus familier avec Jackson, voici quelques aspects où je pense que Jackson a plus de prise en charge que Gson (toutes mes excuses si je manque une Gson fonction):

  • Annotation complète de soutien; y compris la totalité de l'héritage, et avancé "mix" des annotations (associer des annotations avec une classe pour les cas où vous ne pouvez pas ajouter directement)
  • Le Streaming (en incrémental) de la lecture, de l'écriture, pour les ultra-haute performance (ou de la mémoire limitée) des cas d'utilisation; pouvez mélanger avec la liaison de données (lier les sous-arbres) -- EDIT: les dernières versions de Gson également inclure streaming lecteur
  • Modèle d'arbre (DOM-comme l'accès); peut convertir entre les différents modèles (arbre <-> objet java <-> stream)
  • Pouvez utiliser tous les constructeurs (ou statique méthodes de fabrique), et pas seulement dans le constructeur par défaut
  • Champ et les getter/setter accès (plus tôt gson versions utilisées uniquement les champs, ce qui peut avoir changé)
  • Out-of-box JAX-RS soutien
  • Interopérabilité: pouvez également utiliser les annotations JAXB, a l'appui/de rechange pour la commune de paquets (joda, ibatis, cglib), JVM langues (groovy, clojure, scala)
  • La capacité de la force statique (déclaré) type de manipulation pour la sortie
  • Soutien pour la désérialisation de types polymorphes (Jackson 1.5) -- peut sérialiser ET désérialiser des choses comme la Liste correctement (avec des informations de type supplémentaires)
  • Support intégré pour le contenu binaire (base64 vers/à partir de Chaînes JSON)

37voto

inder Points 565

Gson 1.6 inclut maintenant un bas niveau streaming API et un analyseur qui est réellement plus rapide que Jackson.

12voto

snegi Points 178

Ajoutant à d'autres réponses déjà données ci-dessus. Si le cas insensivity est de toute importance pour vous, alors utilisez Jackson. Gson ne supporte pas compte de la casse pour les noms de touche, tandis que jackson.

Voici deux liens connexes

(N) sensibilité à la casse de soutien dans Gson : GSON: Comment obtenir un casse élément de Json?

Sensibilité à la casse de soutien à Jackson https://gist.github.com/electrum/1260489

6voto

raymond.mh.ng Points 41

Il semble que GSon ne supportent pas JAXB. Grâce à la classe JAXB annoté de créer ou de traiter le message JSON, je peux partager la même classe pour créer l’interface de Service Web Restful en utilisant spring MVC.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X