Jacksonの概要
Jackson(ジャクソン)は、JSON(※)形式のデータを処理するための高速かつ軽量なJavaライブラリです。「Jackson Java JSON-processor」とも呼ばれています。
Jacksonは、XML形式のデータを処理するためのJavaライブラリであるStAXやJAXBなどの実装を参考に開発されました。
Jakarta EEにも、JSONを扱うためのAPI(JSR 353: Java API for JSON Processing)が標準で取り込まれています。
また、Avro、BSON、CBOR、CSV、Smile、(Java)Properties、Protobuf、TOML、XML、YAMLなど、各種形式のデータを扱うためのモジュールも存在しており、用途に合わせて使用可能です。
※JSON(ジェイソン、JavaScript Object Notation)は、JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語です。
Jacksonのライセンス
Jackson 1.xではApacheライセンス2.0とLGPL 2.1のデュアルライセンスでしたが、Jackson 2.xではApacheライセンス2.0のみとなっています。
Jacksonは、ライブラリの使用、変更、修正版や派生版などの再配布を自由に行えます。
Jacksonのライセンスについてご不明な点がありましたら、お気軽にお問い合わせください。
Jacksonの動作環境
前提となる動作環境は、以下のとおりです。
- 2.0 ~ 2.13
・Java 6 - 2.14以降
・Java 8 以上
参考:https://github.com/FasterXML/jackson-core/tree/2.15#jdk
※バージョンによって異なりますので、詳細はお問い合わせください。
Jacksonと同様の機能を提供する製品
JSONIC、Gsonなどが、Jacksonと同様の機能を提供しています。
Jacksonの主な特徴
主な特徴は以下のとおりです。
高速 | シリアライズ、デシアリアライズともに安定しており、他のJavaのJSONパーサーとデータバインダーよりも高速であることが測定されている(※コミュニティページより) |
---|---|
依存関係が少ない | 他のパッケージや外部ライブラリに依存しない |
ストリーミング(読み書き) | ストーミングAPIによるJSONデータへのアクセスが可能 |
導入・運用しやすい | オープンソースでライセンス費用がかからないうえ、多機能なライブラリである |
豊富な導入実績 | JSONライブラリとして、国内外を問わず多数の採用実績がある |
コスト効果 | ライセンス費用がかからないため、商用製品に比べて大幅に導入コストを削減可能(有償保守サポートを依頼する場合は別途費用が必要) |
Jacksonの主な機能
主な機能は以下のとおりです。
JacksonではJavaプログラムからJSONデータを扱うために次の3種類の機能が提供されています。
- ストリーミングAPI
JSONデータを先頭から順に読み込みながら処理するため、メモリと処理のオーバーヘッドを少なくできる最も効率的な方法ですが、特定の要素を取得するような用途には向きません。
JSONデータは、JsonParserで読み込み、JsonGeneratorで書き込みます。XMLのStAX (Streaming API for XML)に相当します。 - ツリーモデル
JSONドキュメントの変更可能なメモリ内ツリー表現を提供します。
ObjectMapperにより、JsonNodeノードで構成されるツリーが構築できます。XMLのDOM (Document Object Model)に相当します。 - データバインディング
アノテーションなどに基づいて、JSONオブジェクトとJavaオブジェクトをバインディングします。
-単純データバインディング:JavaのMap, List, String, Number, Boolean型、nullの変換
-完全データバインディング:任意のJava Beanタイプでの変換
ObjectMapperが、異なるオブジェクト間のマーシャリング(JSONの書き込み)とアンマーシャリング(JSONの読み取り)を実行します。
XMLのJAXB (Java Architecture for XML Binding)に相当します。
Jacksonは、用途によって複数のJARファイルに分割されています。主要なものは以下の3つになります。
- Jackson Core:ストリーミングパーサジェネレータが含む
- Jackson Annotations:アノテーションベースのコンフィギュレーション(データバインドで利用)
- Jackson Databind:データバインディング、ツリーモデル(ストリーミングコア上に構築)
Jackson 2.xの場合、Streaming APIだけならば、Jackson Coreのみが必要です。Tree ModelやData Bindingを用いるならば、Jackson AnnotationsとJackson Databindも必要です。
関連OSS
- MongoDB
- Spring Framework
- RESTEasy
- Restlet
Jacksonのダウンロード
Jacksonモジュールはmavenリポジトリから取得することが推奨されています。
https://mvnrepository.com/artifact/com.fasterxml.jackson.core
Jacksonのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。