399 Stimmen

Jackson vs. Gson

Nach der Suche durch einige bestehende Bibliotheken für JSON, habe ich schließlich mit diesen beiden beendet:

  • Jackson
  • Google GSon

Ich habe eine gewisse Vorliebe für GSON, aber im Netz heißt es, dass GSon an einer gewissen himmlischen Leistung leidet Ausgabe (Stand: September 2009).

Ich werde meinen Vergleich fortsetzen; in der Zwischenzeit suche ich Hilfe bei der Entscheidungsfindung.

133voto

mickthompson Punkte 5322

Ich habe diese Recherche in der letzten Woche durchgeführt und bin bei denselben 2 Bibliotheken gelandet. Da ich Spring 3 verwende (das Jackson in seiner Standard-Json-Ansicht ' JacksonJsonView ') war es für mich natürlicher, das Gleiche zu tun. Die 2 lib sind ziemlich gleich... am Ende sie einfach auf eine json-Datei zuordnen! :)

Wie auch immer, wie Sie sagten Jackson hat ein Plus an Leistung, und das ist für mich sehr wichtig. Das Projekt ist auch ziemlich aktiv, wie Sie sehen können aus ihre Webseite und auch das ist ein sehr gutes Zeichen.

88voto

StaxMan Punkte 107669

Jackson und Gson sind die vollständigsten Java-JSON-Pakete in Bezug auf die tatsächliche Datenbindungsunterstützung; viele andere Pakete bieten nur eine primitive Map/List-Bindung (oder ein entsprechendes Baummodell). Beide Pakete bieten vollständige Unterstützung für generische Typen sowie ausreichende Konfigurierbarkeit für viele gängige Anwendungsfälle.

Da ich mit Jackson besser vertraut bin, hier einige Aspekte, bei denen ich denke, dass Jackson eine vollständigere Unterstützung bietet als Gson (bitte entschuldigen Sie, wenn ich eine Funktion von Gson übersehen habe):

  • Umfassende Unterstützung von Anmerkungen, einschließlich vollständiger Vererbung und erweiterter "Mix-in"-Anmerkungen (Verknüpfung von Anmerkungen mit einer Klasse für Fälle, in denen sie nicht direkt hinzugefügt werden können)
  • Streaming (inkrementelles) Lesen, Schreiben, für extrem leistungsstarke (oder speicherbegrenzte) Anwendungsfälle; kann mit Datenbindung (Bindung von Teilbäumen) kombiniert werden -- EDITAR : Die neuesten Versionen von Gson enthalten auch Streaming-Reader
  • Baummodell (DOM-ähnlicher Zugriff); kann zwischen verschiedenen Modellen konvertieren (Baum <-> Java-Objekt <-> Stream)
  • Kann beliebige Konstruktoren (oder statische Fabrikmethoden) verwenden, nicht nur den Standardkonstruktor
  • Feld- und Getter/Setter-Zugriff (frühere gson-Versionen verwendeten nur Felder, dies kann sich geändert haben)
  • Sofort einsetzbare JAX-RS-Unterstützung
  • Interoperabilität: kann auch JAXB-Annotationen verwenden, bietet Unterstützung/Workarounds für gängige Pakete (joda, ibatis, cglib), JVM-Sprachen (groovy, clojure, scala)
  • Möglichkeit, statische (deklarierte) Typbehandlung für die Ausgabe zu erzwingen
  • Unterstützung für die Deserialisierung polymorpher Typen (Jackson 1.5) -- kann Dinge wie List korrekt serialisieren UND deserialisieren (mit zusätzlichen Typinformationen)
  • Integrierte Unterstützung für binäre Inhalte (base64 zu/von JSON Strings)

42voto

inder Punkte 1756

Gson 1.6 enthält jetzt eine Low-Level-Streaming-API und einen neuen Parser, der sogar schneller ist als Jackson.

14voto

snegi Punkte 636

Ergänzend zu den anderen Antworten, die bereits oben gegeben wurden. Wenn Ihnen die Unempfindlichkeit von Fällen wichtig ist, dann verwenden Sie Jackson. Gson unterstützt keine Groß-/Kleinschreibung für Schlüsselnamen, Jackson hingegen schon.

Hier sind zwei verwandte Links

(Nein) Unterstützung der Groß-/Kleinschreibung in Gson : GSON: Wie erhält man ein Element ohne Berücksichtigung der Groß-/Kleinschreibung aus Json?

Unterstützung der Groß- und Kleinschreibung in Jackson https://gist.github.com/electrum/1260489

7voto

raymond.mh.ng Punkte 71

Es scheint, dass GSon JAXB nicht unterstützt. Durch die Verwendung von JAXB annotierte Klasse zu erstellen oder die JSON-Nachricht zu verarbeiten, kann ich die gleiche Klasse teilen, um die Restful Web Service-Schnittstelle zu erstellen, indem Sie Frühling MVC.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X