388

JSON のいくつかの既存のライブラリを検索した後、最終的に次の 2 つにたどり着きました。

  • ジャクソン
  • グーグルGSon

私は GSON に少し偏っていますが、ネット上では、GSon は特定の天体性能の問題に苦しんでいるということです(2009 年 9 月現在)。

私は比較を続けています。それまでの間、私は決心するための助けを探しています。

4

5 に答える 5

127

私は先週この調査を行い、同じ2つのライブラリになりました。Spring 3 (デフォルトの Json ビュー ' JacksonJsonView ' で Jackson を採用) を使用しているので、同じことをする方が自然でした。2つのライブラリはほとんど同じです...最後に、それらは単純にjsonファイルにマップされます! :)

とにかく、あなたが言ったように、ジャクソンのパフォーマンスは + であり、それは私にとって非常に重要です。彼らのウェブページからもわかるように、このプロジェクトは非常に活発であり、これも非常に良い兆候です。

于 2010-03-04T10:52:56.137 に答える
87

Jackson と Gson は、実際のデータ バインディング サポートに関して最も完全な Java JSON パッケージです。他の多くのパッケージは、基本的な Map/List (または同等のツリー モデル) バインディングのみを提供します。どちらもジェネリック型を完全にサポートしており、多くの一般的なユースケースに十分な構成可能性があります。

私は Jackson の方がよく知っているので、Jackson が Gson よりも完全にサポートしていると思われるいくつかの側面を以下に示します (Gson の機能を見逃していたら申し訳ありません)。

  • 広範な注釈のサポート。完全な継承、および高度な「ミックスイン」注釈を含む (直接追加できない場合に備えて、注釈をクラスに関連付けます)
  • 超高パフォーマンス (またはメモリ制限) のユースケース向けのストリーミング (増分) 読み取り、書き込み。データバインディング(サブツリーのバインド)と混在できます-編集:Gsonの最新バージョンにはストリーミングリーダーも含まれています
  • ツリー モデル (DOM のようなアクセス); さまざまなモデル間で変換できます (ツリー <-> Java オブジェクト <-> ストリーム)
  • デフォルトのコンストラクターだけでなく、任意のコンストラクター (または静的ファクトリ メソッド) を使用できます
  • フィールドおよび getter/setter アクセス (以前の gson バージョンはフィールドのみを使用していましたが、これは変更されている可能性があります)
  • すぐに使える JAX-RS サポート
  • 相互運用性: JAXB アノテーションも使用でき、一般的なパッケージ (joda、ibatis、cglib)、JVM 言語 (groovy、clojure、scala) のサポート/回避策があります。
  • 出力の静的 (宣言された) 型処理を強制する機能
  • ポリモーフィック型のデシリアライズのサポート (Jackson 1.5) -- List などを正しくシリアライズおよびデシリアライズできます (追加の型情報を使用)
  • バイナリ コンテンツの統合サポート (base64 to/from JSON Strings)
于 2010-03-12T07:51:08.740 に答える
42

Gson 1.6には、低レベルのストリーミングAPIと、実際にはJacksonよりも高速な新しいパーサーが含まれています。

于 2011-01-21T23:30:25.153 に答える
7

GSon は JAXB をサポートしていないようです。JAXB アノテーション付きクラスを使用して JSON メッセージを作成または処理することにより、同じクラスを共有して、Spring MVC を使用して Restful Web サービス インターフェイスを作成できます。

于 2011-01-24T17:00:44.937 に答える