トップ OSS紹介 Jackson

Jackson

サポート対象

NRIのOpenStandiaが提供するJackson最新情報

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と同様の機能を提供しています。

動作環境

前提となる動作環境は、以下のとおりです。

  • 2.0 ~ 2.13

Java 6

  • 2.14以降

Java 8 以上

参考:https://github.com/FasterXML/jackson-core/tree/2.15#jdk
※バージョンによって異なりますので、詳細はお問い合わせください。

Jacksonのライセンス

Jackson 1.xではApacheライセンス2.0とLGPL 2.1のデュアルライセンスでしたが、Jackson 2.xではApacheライセンス2.0のみとなっています。
Jacksonは、ライブラリの使用、変更、修正版や派生版などの再配布を自由に行えます。

製品ダウンロード

Jacksonモジュールはmavenリポジトリから取得することが推奨されています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Prometheus
    サポート対象

    Prometheus

    プロメテウス。GO言語で書かれたオープンソースのモニタリングツールです。

  • Loki

    Loki

    ロキ。Prometheusに着想を得た、水平方向にスケーラブルすることで可用性を高めたマルチテナントのログ集約システムです。

  • Logstash

    Logstash

    ログスタッシュ。Elastic社により開発された、データ収集ツールです。

  • Apache Log4j
    サポート対象

    Apache Log4j

    アパッチログフォージェイ。オープンソースのJava プログラム用のロギングユーティリティ(API)です。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。