Jackson情報
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では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も必要です。
主な特徴
主な特徴は以下のとおりです。
高速 |
シリアライズ、デシアリアライズともに安定しており、他のJavaのJSONパーサーとデータバインダーよりも高速であることが測定されている(※コミュニティページより) |
---|---|
依存関係が少ない |
他のパッケージや外部ライブラリに依存しない |
ストリーミング(読み書き) |
ストーミングAPIによるJSONデータへのアクセスが可能 |
導入・運用しやすい |
オープンソースでライセンス費用がかからないうえ、多機能なライブラリである |
豊富な導入実績 |
JSONライブラリとして、国内外を問わず多数の採用実績がある |
コスト効果 |
ライセンス費用がかからないため、商用製品に比べて大幅に導入コストを削減可能(有償保守サポートを依頼する場合は別途費用が必要) |
導入事例
Jacksonは、オープンソースのJSONライブラリとして、中小から大規模まで、さまざまな業種・システムで世界中で幅広く利用されています。
類似プロダクト
JSONIC、Gsonなどが、Jacksonと同様の機能を提供しています。
動作環境
Jackson-Core
JDK
- v2.0-2.13:JDK 6以上
- v2.14以上:JDK 8以上
Android
- v2.13:Android SDK 19以上
- v2.14:Android SDK 26以上
Jackson-Databind
JDK
- v2.0-2.7:JDK 6以上
- v2.8-2.12:JDK 7 (ただしv2.11-2.12のビルドにはJDK 8が必要)
- v2.13以上:JDK 8以上
Android
- v2.13:Android SDK24以上
- v2.14:Android SDK 26以上
- v2.15:Android SDK 26以上
- v2.16:Android SDK 26以上
- v2.17:Android SDK 26以上
- v2.18:Android SDK 26以上(計画中)
Jacksonのライセンス
Jackson のライセンスはApacheライセンス2.0です。
Jacksonは、ライブラリの使用、変更、修正版や派生版などの再配布を自由に行えます。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象
Prometheus
プロメテウス。GO言語で書かれたオープンソースのモニタリングツールです。
-
Loki
ロキ。Prometheusに着想を得た、水平方向にスケーラブルすることで可用性を高めたマルチテナントのログ集約システムです。
-
Logstash
ログスタッシュ。Elastic社により開発された、データ収集ツールです。
-
サポート対象
Apache Log4j
アパッチログフォージェイ。オープンソースのJava プログラム用のロギングユーティリティ(API)です。