【Java】JSONデータをパースするって何?Jacksonライブラリを使ってみよう!
  • facebookページ
  • twitterページ
  • 2021.01.01

    【Java】JSONデータをパースするって何?Jacksonライブラリを使ってみよう!

    Javaのプログラム開発でJSONデータをパースする処理は、様々な場面で利用されています。

    今回は、JSONデータのパースに関する基本的な情報から、JSONデータのパース処理で頻繁に利用される「Jackson」ライブラリの使い方を合わせてご紹介していきます。

    JavaでJSONデータをパースするとは?


    そもそもJavaでJSONデータをパースするとは何を意味するのかについて簡単にご紹介しておきます。

    JSONデータ

    JSONとは「JavaScript Object Notation」の略称で、JavaScriptのオブジェクト記法を用いたデータ・フォーマットです。

    名前の通り、JavaScriptで利用されるのはもちろん、JavaやPHP・Pythonといった各種プログラミング言語の開発で利用されています。

    主な利用用途としては、JavaScriptを始めとしたフロントエンド言語と今回ご紹介するようなJavaを始めとしたサーバーサイド言語とのデータのやり取りで利用されます。

    サンプル

    JSONフォーマットは「{}」にkeyとvalueをコロンで区切った形で記述します。

    key項目に関しては必ずダブルクオーテーションで囲う必要があります。

    カンマで区切ることで複数項目の記述が可能で、valueには文字列以外にも数値、null、オブジェクト、配列など様々な値を設定することが出来ます。
    ※下記は項目毎にvalueの値を変更したサンプルです。

    パースする

    次にパースするとはどういった処理なのかについてですが、パースはデータを解析し必要なデータを取り出すことを意味します。

    つまりJSON形式のデータから必要なデータを取り出して、Javaプログラムで利用出来るようにすることをパースすると表現しています。

    JSONデータの中から必要なkeyに設定された値だけを取得したり、JSONデータからJavaのオブジェクトに変換するなど、利用用途は様々です。

    JavaのライブラリでJSONデータをパースする


    Javaの標準APIでもJSONデータをパースすることは可能ですが、より高機能で手軽な「Jackson」というライブラリを利用したJSONパース処理をご紹介していきます。

    jarファイルのダウンロード

    Jacksonの利用にはいくつかの方法がありますが、今回はjarファイルをローカル環境にダウンロードして利用する方法についてご紹介していきます。

    まずは「Jackson Core」「Jackson Annotations」「Jackson Databind」3つのjarファイルをダウンロードしましょう。

    ポテパンダの一言メモ

    いくつかのバージョンがダウンロード可能ですが、基本的には最新バージョンをダウンロードしておけば問題ありません。
    異なるバージョンをダウンロードする場合でも、各種jarファイルのバージョンは合わせておくのが基本ということだけ意識しておきましょう。

    Eclipseでクラスパスの設定

    ダウンロードしてきたjarファイルはクラスパスを通すことで利用可能な状態となります。

    今回は利用者の多い統合開発環境Eclipseでのクラスパスの設定方法についてご紹介します。

    Eclipseでは「パッケージエクスプローラー」に表示されているプロジェクト名を右クリックし、「ビルド・パス」→「外部アーカイブの追加」を選択することで外部から入手したjarファイルが利用可能となります。

    取り込みが完了すると「参照ライブラリー」に追加したjarファイルが表示されていることをご確認頂けます。

    JsonNodeを利用したサンプル

    JSON形式のデータを、Javaのオブジェクトなどに変換せず、そのままプログラム開発に利用したい場合には、JsonNodeを利用する方法が便利です。

    実行した結果が下記の通りです。

    解説1

    Javaのソースコードに直接JSONデータを記述し、変数「json」に格納しています。

    Javaのファイル入出力を利用して、JSONファイルのデータを取り込むことも可能です。

    解説2

    ObjectMapperは、jacksonライブラリに含まれるクラスです。

    インスタンス化した後、「readTree」メソッドを利用し、指定したJSON文字列から「JsonNode」型にデータを変換し格納しています。

    解説3

    JsonNodeに格納した値は、getメソッドの引数にkey項目を指定することで取り出すことが可能です。

    実際に指定された値を取り出す場合には、「textValue」や「intValue」といったメソッドを利用することで値の取り出しが可能です。

    JSONデータをJavaオブジェクトに変換

    続いてJSON形式のデータを、用意したJavaオブジェクトに変換する方法についてご紹介していきます。

    サンプルでは「Main.java」と同一階層に「User.java」というファイルを下記の内容で作成しました。

    Main.javaは下記のように変更します。

    実行した結果は下記の通りです。

    解説

    基本的な構成は、上述したJSONデータをJsonNodeに変換するケースと同じですが、ObjectMapperの「readValue」メソッドを利用して実装を行います。

    JSONのkey項目とJavaオブジェクトのフィールド名を合わせておくことで、型として指定したJavaオブジェクトにJSONの値が格納され、通常のJavaオブジェクトと同様の方法で値を取得することが出来るようになります。

    JavaオブジェクトをJSONデータに変換

    では反対にJavaオブジェクトをJSONデータに変換する方法も合わせて確認しておきましょう。

    Main.javaを下記のように変更しました。

    実行した結果が下記の通りです。

    解説

    JavaオブジェクトからJSON形式に変換する際には、ObjectMapperの「writeValueAsString」メソッドを利用することで実現可能です。

    引数に任意のJavaオブジェクトを設定することで、JSON形式の文字列が返却されます。

    さいごに: JSONデータのパースはJava頻出処理の1つ


    本記事では、Javaのシステム開発で頻繁に利用されるJSONデータのパース処理について、基本的な情報からJacksonというライブラリを利用した実際の処理サンプルをご紹介してきました。

    JSONパース用のライブラリとしては、Jackson以外にも「GSON」などが人気ライブラリとして利用されています。

    Javaの標準APIでもJSONのパース処理を実施することは可能ですが、今回ご紹介したJacksonのようなライブラリを利用することで、様々な処理を簡単に実現することが可能です。

    JSONパース処理の基本を理解した上で、積極的にライブラリを活用してJavaのシステム開発を効率化していきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE