Après avoir cherché dans certaines bibliothèques existantes pour JSON, je me suis finalement retrouvé avec ces deux:
- Jackson
- Google GSon
Je suis un peu partial envers GSON, mais le mot sur le net est que GSon souffre d'une certaine performance céleste problème de (depuis septembre 2009).
Je continue ma comparaison; en attendant, je cherche de l'aide pour me décider.
Réponses:
J'ai fait cette recherche la semaine dernière et je me suis retrouvé avec les mêmes 2 bibliothèques. Comme j'utilise Spring 3 (qui adopte Jackson dans sa vue Json par défaut « JacksonJsonView »), il était plus naturel pour moi de faire de même. Les 2 lib sont à peu près les mêmes ... à la fin, elles sont simplement mappées sur un fichier json! :)
Quoi qu'il en soit, comme vous l'avez dit, Jackson a un + en termes de performances et c'est très important pour moi. Le projet est également très actif comme vous pouvez le voir sur leur page Web et c'est aussi un très bon signe.
la source
Jackson et Gson sont les packages Java JSON les plus complets concernant la prise en charge réelle de la liaison de données; de nombreux autres packages ne fournissent qu'une liaison primitive Map / List (ou modèle d'arbre équivalent). Les deux ont également un support complet pour les types génériques, ainsi qu'une configurabilité suffisante pour de nombreux cas d'utilisation courants.
Étant donné que je connais mieux Jackson, voici certains aspects où je pense que Jackson a un support plus complet que Gson (excuses si je manque une fonctionnalité Gson):
la source
Gson 1.6 comprend désormais une API de streaming de bas niveau et un nouvel analyseur qui est en fait plus rapide que Jackson.
la source
Ajout à d'autres réponses déjà données ci-dessus. Si l'insensibilité à la casse est importante pour vous, utilisez Jackson. Gson ne prend pas en charge l'insensibilité à la casse pour les noms de clés, contrairement à jackson.
Voici deux liens connexes
(Non) Prise en charge de la casse dans Gson: GSON: Comment obtenir un élément insensible à la casse de Json?
Prise en charge de la casse dans Jackson https://gist.github.com/electrum/1260489
la source
MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
, ajouté dans Jackson 2.5. Donc pas besoin d'ajouter du code personnalisé pour ça.Il semble que GSon ne prend pas en charge JAXB. En utilisant la classe annotée JAXB pour créer ou traiter le message JSON, je peux partager la même classe pour créer l'interface Restful Web Service à l'aide de Spring MVC.
la source