Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのストリーミングAPIを使ってJSON文字列を解析する方法


JavaのStreaming APIは、重要なインターフェースであるJsonParserを中心に構成されています。このインターフェースには、JSONをストリーミング方式で解析するためのメソッドが用意されており、JSONデータに対して前方方向・読み取り専用のアクセスを提供します。

Jsonクラスには、入力ソースからパーサーを生成するためのメソッドが含まれています。JSONを解析する際は、Jsonクラスの静的メソッドcreateParser()を使用します。

なお、このAPIはJSR 353(Java API for JSON Processing:JSON-P)に基づいており、利用するにはGlassfish実装などのライブラリをプロジェクトの依存関係に追加する必要があります。

構文

public static JsonParser createParser(Reader reader)

引数にはjava.io.Readerオブジェクトを渡します。文字列として保持しているJSONを解析する場合は、StringReaderを使うと簡単です。

コード例

import java.io.*;
import javax.json.Json;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParser.Event;

public class JSONParseringTest {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"Adithya\",\"employeeId\":\"115\",\"age\":\"30\"}";
        JsonParser parser = Json.createParser(new StringReader(jsonString));
        while(parser.hasNext()) {
            Event event = parser.next();
            if(event == Event.KEY_NAME) {
                switch(parser.getString()) {
                    case "name":
                        parser.next();
                        System.out.println("Name: " + parser.getString());
                        break;
                    case "employeeId":
                        parser.next();
                        System.out.println("EmployeeId: " + parser.getString());
                        break;
                    case "age":
                        parser.next();
                        System.out.println("Age: " + parser.getString());
                        break;
                }
            }
        }
    }
}

実行結果

Name: Adithya
EmployeeId: 115
Age: 30

コードの解説

上記の例では、まずJson.createParser()StringReaderを渡してパーサーを生成しています。続いて、hasNext()next()を使ってJSONのイベントを先頭から順番に取得していきます。

取得したイベントの種類がEvent.KEY_NAME(キー名)である場合に、getString()でキー名を判定し、switch文で目的のキーに応じた処理へ分岐させます。キー名の次にあるのは値のイベントなので、もう一度parser.next()を呼び出してカーソルを進め、そこでgetString()を実行することで実際の値を取得できる仕組みです。

このようにストリーミングAPIでは、JSON全体をメモリに展開せずにイベントを逐次処理できるため、大きなJSONデータを扱う場合でもメモリ消費を抑えながら高速に解析を行えます。

  1. AndroidでJSON文字列を解析(パース)する方法をわかりやすく解説

    AndroidでJSON文字列を解析する方法この記事では、AndroidアプリでJSON文字列を解析(パース)する方法を、サンプルコード付きで段階的に解説します。JSONObjectやJSONArrayクラスを使えば、JSON形式のデータから必要な値を簡単に取り出すことができます。手順1:新しいプロジェクトを作成するまず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な情報を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)を編集する次に、res/layout

  2. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを