これは、ジャクソンプロジェクトのホームページです。
(注:最新のリリース情報については、Jacksonリリースを参照してください)
ジャクソンは、「Java Json Library」または「Javaの最高のJsonパーサー」として知られています。または単に「Json for Java」として。
それ以上に、ジャクソンは、JAVA(およびJVMプラットフォーム)のデータ処理ツールのスイートです。これには、JSONパーサー /ジェネレーターライブラリのフラッグシップストリーミング、データバインディングライブラリ(JSONへのPOJOS)、および追加データ形式モジュールがアブロ、BSON、CBOR、CSV、CSV、Yjava、csv、protobuf、protis、csv、yava)また、Guava、Joda、Pcollectionsなどの広く使用されているデータ型のデータ型をサポートするデータ形式モジュールの大規模なセットでさえ、さらに多くをサポートします(以下を参照)。
実際のコアコンポーネントは、3つのコアパッケージ(ストリーミング、データビンド、注釈)を含む独自のプロジェクトの下に住んでいます。データ形式ライブラリ。データ型ライブラリ。 JAX-RSプロバイダー。そして、他の拡張モジュールの雑多なセット - このプロジェクトは、すべてのピースを結びつけるための中央ハブとして機能します。
このReadmeの良い仲間は、Jackson Project FAQです。
Jackson Suiteには2つの主要なバージョンがあります。1.xは非推奨で、バージョンはリリースされません。 2.xはアクティブに開発されたバージョンです。これらの2つの主要なバージョンは、異なるJavaパッケージとMaven Artifact IDを使用しているため、相互に互換性がありませんが、平和的に共存することができます。プロジェクトは、競合なしにJackson 1.xと2.xの両方に依存できます。これは設計によるものであり、1.xから2.xへのより滑らかな移行を可能にする戦略として選択されました。
これらのブランチからの最新の安定したバージョンは次のとおりです。
ジャクソンの使用方法は、Mavenリポジトリを使用することです。リリースは、Central Mavenリポジトリ(CMR)に対して行われます。個々のプロジェクトのWikiページには、CMRを指す直接ダウンロードリンクも含まれる場合があります。
2.xリリースのリリースノートは、Jacksonリリースページから見つかります。
以下にリストされているほとんどのプロジェクトは、ジャクソン開発チームが主導しています。しかし、他の大規模なジャクソンコミュニティのメンバーによる一部。どのバージョンが連携するかに関する混乱を減らすために、モジュールのバージョンを互換性のあるものに保ちます。
コアモジュールは、拡張機能(モジュール)が構築する基盤です。現在(Jackson 2.xのように)そのような3つのモジュールがあります:
streamingパッケージでデータバインディング(およびオブジェクトシリアル化)サポートを実装します。 streamingとannotationsパッケージの両方に依存しますこれらの拡張機能は、プラグインジャクソンModule ( ObjectMapper.registerModule()に登録)であり、ジャクソンdatabindパッケージ( ObjectMapper / ObjectReader / ObjectWriter )がこれらのタイプを読み取り、書き込むことができるように、シリアル化装置と脱介入剤を追加することにより、一般的に使用されるさまざまなJavaライブラリのデータ型のサポートを追加します。
Jacksonチームが直接維持するDatatypeモジュールは、次のGitHubリポジトリの下にあります。
jackson-module-parameter-names :新しいJDK8機能、コンストラクターの名前とメソッドパラメーターの名前にアクセスする機能を使用するためのサポートを追加して、 @JsonPropertyを省略するモジュール。jackson-datatype-jsr310 :「Java 8日付」のサポート(JDK 8に追加)jackson-datatype-jdk8 : Optionalを含む日付/時刻の種類以外のJDK 8データ型のサポートMoney 、 CurrencyUnit )javax.json )および「new」( jakarta.json )の2つのデータ型モジュール:jakarta.jsonの「新しい」JSON-Pタイプのサポート(ジャクソン2.12.2に追加)javax.jsonの「古い」JSON-PタイプのサポートJSONObject 、 JSONArrayなどのorg.jsonライブラリタイプのサポートさらに、Core Jacksonチームによって直接維持されていない追加のモジュールを認識しています。
jackson-dataformat-protobufとは異なり、プロトブフのエンコード/デコードのサポートを追加しますが、標準のJava Protobufライブラリに依存しません。com.github.caligin.tinytypes 、artifact tinytypes-jackson )が含まれます。org.vertx.java.core.json.JsonObjectオブジェクトを読み取り/書き込むためのJackson-datatype-vertx(再パッケージorg.jsonノードタイプ)Jackson Jax-RSプロバイダーには、Jax-RS実装(Jersey、Resteasy、CXFなど)のデータフォームサポートを追加するハンドラーがあります。プロバイダーは、 MessageBodyReaderとMessageBodyWriterを実装します。現在、サポートされているフォーマットには、 JSON 、 Smile 、 XML 、 YAML 、 CBORが含まれます。
データ形式モジュールは、JSON以外のデータ形式のサポートを提供します。それらのほとんどは、 streaming API抽象化を単純に実装するため、データバインディングコンポーネントをそのまま使用できるようにします。スキーマのようなものを処理するための追加のdatabindビンドレベルの機能を提供する(および必要とするものはほとんどありません)。
現在、次のデータ形式モジュールは完全に使用可能でサポートされています(括弧内のバージョン番号は、含まれている場合、モジュールを含む最初のJackson 2.xバージョンです。
streaming実装とAVROスキーマの追加のdatabindレベルサポートを備えていますdatabind追加を備えたComma分離値形式 - streaming APIをサポートAvroと同様にサポートされていますstreaming APIを介して互換性のある100%API/論理モデル、 databindの変更はありませんstreamingとdatabind両方の実装でサポートしていますstreamingとdatabind両方の実装を提供します。 jaxb '"code-first"モードに似ています( "xml schema first"のサポートはありませんが、jaxb豆を使用できます)streamingジャクソンコアチーム以外の開発者が提供する他のデータ形式モジュールもあります。
MsgPack )形式を追加しますJackson Annotationsは、Pojosの意図されたプロパティと予想される処理を定義し、Jacssonなどを使用してJSONやその他の形式を読み込むためにこれを使用して、外部スキーマの生成も可能にします。この機能の一部は、上記のデータ形式拡張機能に含まれています。しかし、次のような多くのスタンドアロンスキーマツールもあります。
FasterXMLチームによるその他の完全に使用可能なモジュールは次のとおりです。
@JacksonInjectの代わりに(および基本的なGuice Annotations)Guice Injectors(および基本的なGuice Annotations)からの注入値を許可する拡張機能JAXBアノテーションの使用を代替として(またはその代わりに)標準的なジャクソンアノテーションとして使用することを許可します@JacksonInject Annotationを介して、OSGIレジストリからの値を注入できます。@JsonPropertyを指定する必要を避けるために、Creator(コンストラクター、ファクトリーメソッド)パラメーター名を自動的に把握するための小さな拡張機能。Jackson Databindは汎用データバインディングに適していますが、携帯電話などの一部のドメインではフットプリントとスタートアップのオーバーヘッドが問題になる可能性があります。特に軽量使用の場合(読み取りまたは書き込みのカップル)。さらに、一部の開発者は、フルジャクソンAPIが圧倒的であると感じています。
これらすべての理由から、ジャクソンJRと呼ばれる機能のサブセットをサポートする、はるかにシンプルで小さなライブラリを作成することにしました。 Jackson Streaming APIに基づいていますが、DataBindに依存しません。その結果、そのサイズ(JARとランタイムメモリの使用の両方)はかなり小さくなります。そして、そのAPIは非常にコンパクトです。
ジャクソンプロジェクトを支援したい場合は、貢献をチェックしてください。
あなたもチェックアウトしたいかもしれません:
ジャクソンのコンポーネントは、メーリングリスト、Gitterフォーラム、GitHubの問題を通じて、ジャクソンコミュニティによってサポートされています。詳細については、貢献を参照してください。
無料の(すべての)コミュニティサポートに加えて、エンタープライズサポート(バージョン2.10で開始)は、(ほとんどの)ジャクソンコンポーネントのTideliftサブスクリプションの一部として利用できます。
Jacksonと他の何千ものパッケージのメンテナーは、Tideliftと協力して、アプリケーションを構築するために使用するオープンソースの依存関係の商業サポートとメンテナンスを提供しています。時間を節約し、リスクを減らし、コードの健康を改善しながら、使用する正確な依存関係のメンテナーに支払います。もっと詳しく知る。
可能性のあるセキュリティの脆弱性を報告するための推奨されるメカニズムは、いわゆる「調整された開示計画」に続きます(一般的なアイデアについては、DCPの定義を参照)。最初のステップは、Tideliftセキュリティの連絡先を提出することです。Tideliftは、システム経由ですべてのレポートを関連するパッケージのメンテナーにルーティングし、懸念を評価して可能な修正を発行するプロセスを開始し、更新通知を送信します。セキュリティ連絡先を提出するためにTideliftサブスクライバーである必要はないことに注意してください。
または、fasterxml dot comメーリングアドレスでinfoに対して可能な脆弱性を報告することもできます。レポートに合わせて問題を提出することは問題ありませんが、それを行う場合は、問題にセキュリティ問題の詳細を含めるのではなく、電子メールの連絡先のみを含めてください。これは、問題のために、必要に応じてパッチを提供する時間を与えるために重要です。
ジャクソンのバグは、影響するコンポーネントに対して報告する必要があります。このため、このプロジェクトでは問題トラッカーが有効になっていません。どの特定のプロジェクトの問題が影響するかがわからない場合、最も可能性の高いコンポーネントはjackson-databindであるため、Jackson Databind Issue Trackerを使用します。
提案と新しいアイデアについては、ジャクソンの未来のアイデアをお試しください
初めてのユーザーには、一般的な使用 / JSONチュートリアルなど、多くの優れたジャクソン使用チュートリアルがあります。
より具体的なチュートリアル:
ジャクソンコンポーネントに関する次のレポートが公開されています
Java開発者による意見がJackson Projectに関係していないため、どのライブラリを使用するかについての意見が必要なので、既存の独立した比較のいくつかへのリンクがあります。