英語の勉強中です。というわけで、The Java EE 7 Tutorialの19 JSON Processingをテキトーに訳した。とはいえ、ここはさすがにあんま大してこと書いてないっすな。
19 JSON Processing
この章ではJava API for JSON Processing (JSR 353)を説明します。JSONとは、Webサービスとその他の連携アプリケーションで広く使われているデータ交換フォーマットです。JSR 353は、JSONデータをオブジェクトモデルもしくはストリーミングモデルで、パース・変換・クエリーをするための、APIを提供します。
- Introduction to JSON
- JSON Processing in the Java EE Platform
- Using the Object Model API
- Using the Streaming API
- JSON in Java EE RESTful Web Services
- The jsonpmodel Example Application
- The jsonpstreaming Example Application
- Further Information about the Java API for JSON Processing
19.1 Introduction to JSON
JSONとは、Webサービスとその他の連携アプリケーションで広く使用されている、JavaScript起源のテキストベースなデータ交換フォーマットです。以下のセクションでは、JSONのシンタックス、JSONの概要、JSONのパースと生成の一般的なアプローチ、について紹介します。
19.1.1 JSON Syntax
JSONは二つのデータ構造(オブジェクトと配列)のみ定義しています。オブジェクトはname-valueペアの組み合わせであり、配列は値のリストです。JSONは7つの型を定義しており、string, number, object, array, true, false, nullです。
以下の例は、name-valueペアを含むサンプルのオブジェクトのJSONデータを示しています。nameが"phoneNumbers"
のvalueは二つのオブジェクトを要素に持つ配列です。
{ "firstName": "Duke", "lastName": "Java", "age": 18, "streetAddress": "100 Internet Dr", "city": "JavaTown", "state": "JA", "postalCode": "12345", "phoneNumbers": [ { "Mobile": "111-111-1111" }, { "Home": "222-222-2222" } ] }
- オブジェクトは波括弧({})で囲われ、name-valueペアはカンマ(,)で区切られ、また、nameとvalueはコロン(:)で区切られます。オブジェクトのnameは文字列であり、nameに対応するvalueは7つの型のいずれかとなります。valueには、別のオブジェクトあるいは配列を含められます。
- 配列は角括弧([])で囲われ、その値はカンマ(,)で区切られます。配列値は異なる型でもよく、別のオブジェクトあるいは配列を含められます。
- オブジェクトと配列が別のオブジェクトや配列を含むとき、データ構造はツリーのようになります。
19.1.2 Uses of JSON
JSONは、インターネットを通してアプリケーションが相互通信する際のシリアライズ・デシアライズされる共通フォーマットとして使用されることがあります。これらのアプリケーションは異なる言語環境や環境で開発されています。JSONはオープンスタンダードなため、このような状況に適合します。また、read/writeが簡単で、他の表現よりもコンパクトで済みます。
RESTfulなwebサービスはリクエストとレスポンスのデータフォーマットとしてJSONを使用することがほとんどです。HTTPヘッダーにはリクエストやレスポンスがJSONデータであること示すために、下記のようにします。
Content-Type: application/json
JSONはXMLよりもたいていはコンパクトで、その理由はJSONは閉じタグが不要なためです。XMLとは異なり、JSONはJSONのデータ構造を定義したり検証するために広く支持されているスキーマはありません。
19.1.3 Generating and Parsing JSON Data
JSONデータの生成とパースには二つのプログラミングモデルがあり、XMLドキュメントで使用される方法に似ています。
- オブジェクトモデル(object model)は、メモリ上にJSONデータを表現するツリーを生成します。このツリーは、ナビゲーション・分析・修正が可能です。このアプロ―チは最も柔軟性があり、ツリーの完全なコンテンツへのアクセスを要求する処理を可能にします。しかしながら、ストリーミングモデルに比べると処理速度の低下やメモリの消費をすることがあります。オブジェクトモデルは、一度ツリー全体を走査することでJSON出力を生成します。
- ストリーミングモデル(streaming model)は、JSONデータの要素を一つ一つ読み込むイベントベースのパーサーを使用します。このパーサーは、オブジェクトや配列の開始や終了時・keyもしくはvalueの発見時に、イベントを生成して処理を中断します。各要素はアプリケーションのコードで処理や廃棄され、パーサーは次のイベントに進みます。このアプローチは、データの残り部分を必要としない、ローカル処理に適しています。ストリーミングモデルは、一要素ごとの関数呼び出しでストリームにJSON出力を生成します。
多くのプログラミング言語と環境において多数のJSONジェネレーターとパーサーが利用可能です。JSON Processing in the Java EE PlatformはJava API for JSON Processing(JSR 353)で提供される機能について説明しています。
19.2 JSON Processing in the Java EE Platform
JSR 353をサポートするJava EEでは、Generating and Parsing JSON Dataで説明したオブジェクトモデルかストリーミングモデルを使用する、JSONデータのパース・変換・クエリのためのAPIが提供されています。The Java API for JSON Processingは以下のパッケージから構成されています。
javax.json
パッケージは、readerインタフェース、writerインタフェース、オブジェクトモデルのためのmodel builderインタフェースで構成されています。また、他のユーティリティークラスとJSON要素用のJavaの型も含まれています。Table 19-1がこのパッケージの主要なクラスとインタフェースの一覧です。javax.json.stream
パッケージはストリーミングモデル用のパーサーとジェネレーターのインターフェースで構成されています。Table 19-2がこのパッケージの主要なクラスとインタフェースの一覧です。
Table 19-1 Main Classes and Interfaces in javax.json
クラスかインタフェース | 説明 |
---|---|
Json |
JSONパーサー・ビルダー・ジェネレーターのインスタンス生成staticメソッドで構成されています。また、このクラスはパーサー・ビルダー・ジェネレーターのファクトリオブジェクトを生成するためのメソッドも含まれます。 |
JsonReader |
ストリームからJSONデータを読み込んでメモリ上にオブジェクトモデルを生成します。 |
JsonObjectBuilder , JsonArrayBuilder |
アプリケーションのコードから要素を追加することでメモリ上のオブジェクトモデルや配列モデルを生成します。 |
JsonWriter |
メモリからストリームへオブジェクトモデルを書き込みます。 |
JsonValue |
JSONデータ上の要素(オブジェクト、配列、値など)。 |
JsonStructure |
JSONデータのオブジェクトや配列。このインタフェーズはJsonValue のサブタイプです。 |
JsonObject , JsonArray |
JSONデータのオブジェクトや配列。この二つのインタフェースはJsonStructure のサブタイプです。 |
JsonString , JsonNumber |
JSONデータのオブジェクトや配列。この二つのインタフェースはJsonValue のサブタイプです。 |
JsonException |
JSON処理中に発生した問題を示す例外 |
Table 19-2 Main Classes and Interfaces in javax.json.stream
クラスかインタフェース | 説明 |
---|---|
JsonParser |
ストリームやオブジェクトモデルからJSONデータを読み込めるイベントベースのパーサー |
JsonGenerator |
JSONデータをストリームへ一度に一要素書き込みます。 |
19.3 Using the Object Model API
このセクションではオブジェクトモデルAPIの使用例を四つ紹介します。それぞれの内容は、JSONデータからのオブジェクトモデル生成、アプリケーションのコードからオブジェクトモデルを生成、オブジェクトモデルのナビゲーション、ストリームへのオブジェクトモデルの書き込み、になります。
19.3.1 Creating an Object Model from JSON Data
以下のコードはテキストファイルのJSONデータからオブジェクトモデルを生成する方法の例です。
import java.io.FileReader; import javax.json.Json; import javax.json.JsonReader; import javax.json.JsonStructure; ... JsonReader reader = Json.createReader(new FileReader("jsondata.txt")); JsonStructure jsonst = reader.read();
オブジェクト参照jsonst
の型は、ファイルの中身に依存して、JsonObject
やJsonArray
どちらにも成りえます。JsonObject
とJsonArray
はJsonStructure
のサブタイプです。この参照はツリーのトップを示しており、ツリーのナビゲーションと、JSONデータとしてストリームに書き込むことが可能です。
19.3.2 Creating an Object Model from Application Code
以下のコードはアプリケーションコードからオブジェクトモデルを生成する方法の例です。
import javax.json.Json; import javax.json.JsonObject; ... JsonObject model = Json.createObjectBuilder() .add("firstName", "Duke") .add("lastName", "Java") .add("age", 18) .add("streetAddress", "100 Internet Dr") .add("city", "JavaTown") .add("state", "JA") .add("postalCode", "12345") .add("phoneNumbers", Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("type", "mobile") .add("number", "111-111-1111")) .add(Json.createObjectBuilder() .add("type", "home") .add("number", "222-222-2222"))) .build();
オブジェクト参照model
はツリーのトップを示しており、この参照はadd
メソッドのネスト呼び出しとbuild
メソッドを呼び出すことで生成されます。JsonObjectBuilder
クラスは以下のようなadd
メソッドを持っています。
JsonObjectBuilder add(String name, BigDecimal value) JsonObjectBuilder add(String name, BigInteger value) JsonObjectBuilder add(String name, boolean value) JsonObjectBuilder add(String name, double value) JsonObjectBuilder add(String name, int value) JsonObjectBuilder add(String name, JsonArrayBuilder builder) JsonObjectBuilder add(String name, JsonObjectBuilder builder) JsonObjectBuilder add(String name, JsonValue value) JsonObjectBuilder add(String name, long value) JsonObjectBuilder add(String name, String value) JsonObjectBuilder addNull(String name)
JsonArrayBuilder
クラスは、name (key)パラメータを取らないadd
メソッドも持っています。JsonArrayBuilder
オブジェクトを引数に渡したり、add
メソッドと同等なJsonObjectBuilder
オブジェクトを使うことで、オブジェクトと配列をネストさせられます。
結果として出来あがるJSONのツリー表現はJSON Syntaxを参照してください。
19.3.3 Navigating an Object Model
以下のコードはオブジェクトモデルのナビゲーションのシンプルな例です。
import javax.json.JsonValue; import javax.json.JsonObject; import javax.json.JsonArray; import javax.json.JsonNumber; import javax.json.JsonString; ... public static void navigateTree(JsonValue tree, String key) { if (key != null) System.out.print("Key " + key + ": "); switch(tree.getValueType()) { case OBJECT: System.out.println("OBJECT"); JsonObject object = (JsonObject) tree; for (String name : object.keySet()) navigateTree(object.get(name), name); break; case ARRAY: System.out.println("ARRAY"); JsonArray array = (JsonArray) tree; for (JsonValue val : array) navigateTree(val, null); break; case STRING: JsonString st = (JsonString) tree; System.out.println("STRING " + st.getString()); break; case NUMBER: JsonNumber num = (JsonNumber) tree; System.out.println("NUMBER " + num.toString()); break; case TRUE: case FALSE: case NULL: System.out.println(tree.getValueType().toString()); break; } }
navigateTree
メソッドはCreating an Object Model from JSON DataとCreating an Object Model from Application Codeで組み立てられるモデルを使用して、以下のように呼び出します。
navigateTree(model, null);
navigateTree
メソッドは二つの引数を取り、それぞれJSON要素とkeyです。keyはオブジェクト内のkey-valueペアを表示する際にのみ使用します。ツリーの要素はJsonValue
型で表現されます。もし要素がオブジェクトか配列ならば、オブジェクトや配列に含まれる全要素に対してこのメソッドを再帰呼び出しします。もし要素が値ならば、標準出力に出力します。
JsonValue.getValueType
メソッドは要素がオブジェクト・配列・値のどれなのかを調べます。オブジェクトでは、JsonObject.keySet
メソッドはオブジェクトのキーのセットを返し、JsonObject.get(String name)
メソッドはkeyがname
である要素の値を返します。配列では、JsonArray
はList<JsonValue>
インタフェースを実装しています。JsonArray
インスタンスとJsonObject.keySet
が返すSet<String>
インスタンスには拡張forループが使用可能です。
navigateTree
メソッドをCreating an Object Model from Application Codeで作られるモデルで実行すると以下のような出力になります。
OBJECT Key firstName: STRING Duke Key lastName: STRING Java Key age: NUMBER 18 Key streetAddress: STRING 100 Internet Dr Key city: STRING JavaTown Key state: STRING JA Key postalCode: STRING 12345 Key phoneNumbers: ARRAY OBJECT Key type: STRING mobile Key number: STRING 111-111-1111 OBJECT Key type: STRING home Key number: STRING 222-222-2222
19.3.4 Writing an Object Model to a Stream
Creating an Object Model from JSON DataとCreating an Object Model from Application Code で作成したオブジェクトモデルはJsonWriter
クラスを使用して以下のようにストリームへ書き込めます。
import java.io.StringWriter; import javax.json.JsonWriter; ... StringWriter stWriter = new StringWriter(); JsonWriter jsonWriter = Json.createWriter(stWriter); jsonWriter.writeObject(model); jsonWriter.close(); String jsonData = stWriter.toString(); System.out.println(jsonData);
Json.createWriter
メソッドは引数として出力用のストリームを取ります。JsonWriter.writeObject
メソッドはストリームへオブジェクトを書き込みます。JsonWriter.close
メソッドは内部的に持っている出力ストリームをクローズします。
以下の例はtry-with-resourcesでJSONのライターを自動的にクローズしています。
StringWriter stWriter = new StringWriter(); try (JsonWriter jsonWriter = Json.createWriter(stWriter)) { jsonWriter.writeObject(model); } String jsonData = stWriter.toString(); System.out.println(jsonData);
19.4 Using the Streaming API
ストリーミングAPIの使用例を二つ説明します。
19.4.1 Reading JSON Data Using a Parser
ストリーミングAPIはJSONテキストのパースに最も効果的なアプローチです。以下のコードはJsonParser
オブジェクトの生成とイベントを使用したJSONデータのパースの方法を示します。
import javax.json.Json; import javax.json.stream.JsonParser; ... JsonParser parser = Json.createParser(new StringReader(jsonData)); while (parser.hasNext()) { JsonParser.Event event = parser.next(); switch(event) { case START_ARRAY: case END_ARRAY: case START_OBJECT: case END_OBJECT: case VALUE_FALSE: case VALUE_NULL: case VALUE_TRUE: System.out.println(event.toString()); break; case KEY_NAME: System.out.print(event.toString() + " " + parser.getString() + " - "); break; case VALUE_STRING: case VALUE_NUMBER: System.out.println(event.toString() + " " + parser.getString()); break; } }
この例は三ステップで構成されています。
Json.createParser
staticメソッド呼び出しによるパーサーインスタンスの取得。JsonParser.hasNext
とJsonParser.next
メソッドでパーサーイベントをイテレート。- 各要素にローカルでの処理を施す。
この例ではパーサーの10個のイベントタイプを使用しています。パーサーのnext
メソッドは次のイベントに進めます。KEY_NAME
, VALUE_STRING
, VALUE_NUMBER
イベントタイプでは、JsonParser.getString
メソッドを呼び出すことで要素の内容を取得できます。VALUE_NUMBER
イベントでは、以下のメソッドも使用できます。
JsonParser.isIntegralNumber
JsonParser.getInt
JsonParser.getLong
JsonParser.getBigDecimal
javax.json.stream.JsonParser
インタフェースの詳細な情報についてはJava EE 7 APIリファレンスを参照してください。
この例の出力は以下のようになります。
START_OBJECT KEY_NAME firstName - VALUE_STRING Duke KEY_NAME lastName - VALUE_STRING Java KEY_NAME age - VALUE_NUMBER 18 KEY_NAME streetAddress - VALUE_STRING 100 Internet Dr KEY_NAME city - VALUE_STRING JavaTown KEY_NAME state - VALUE_STRING JA KEY_NAME postalCode - VALUE_STRING 12345 KEY_NAME phoneNumbers - START_ARRAY START_OBJECT KEY_NAME type - VALUE_STRING mobile KEY_NAME number - VALUE_STRING 111-111-1111 END_OBJECT START_OBJECT KEY_NAME type - VALUE_STRING home KEY_NAME number - VALUE_STRING 222-222-2222 END_OBJECT END_ARRAY END_OBJECT
19.4.2 Writing JSON Data Using a Generator
以下のコードはストリーミングAPIを使用してファイルへJSONデータを書き込む方法の一例です。
FileWriter writer = new FileWriter("test.txt"); JsonGenerator gen = Json.createGenerator(writer); gen.writeStartObject() .write("firstName", "Duke") .write("lastName", "Java") .write("age", 18) .write("streetAddress", "100 Internet Dr") .write("city", "JavaTown") .write("state", "JA") .write("postalCode", "12345") .writeStartArray("phoneNumbers") .writeStartObject() .write("type", "mobile") .write("number", "111-111-1111") .writeEnd() .writeStartObject() .write("type", "home") .write("number", "222-222-2222") .writeEnd() .writeEnd() .writeEnd(); gen.close();
この例は、引数にwriterか出力ストリームを取るJson.createGenerator
staticメソッドを呼ぶことでJSONジェネレーターを取得しています。この例はJSONデータをtest.txt
ファイルへ書き込むために、write
, writeStartArray
, writeStartObject
, writeEnd
メソッドをネストさせて呼び出しています。JsonGenerator.close
メソッドは内部的に持つwriterや出力ストリームをクローズします。
19.5 JSON in Java EE RESTful Web Services
このセクションでは、Java EEパッケージとJava API for JSON Processingが、どのようにRESTful webサービスのためのJSONサポートを提供しているか、について説明します。RESTful webサービスの詳細情報についてはChapter 29, "Building RESTful Web Services with JAX-RS,"を参照してください。
GlassFish Serverに含まれるJAX-RS (JSR 311)の参照実装のJerseyは、JSONデータをRESTfulなリソースメソッドからJAXBを使用するJavaオブジェクトへのバインディングを提供しています。これについてはUsing JAX-RS with JAXB in Chapter 31, "JAX-RS: Advanced Topics and an Example"で解説しています。しかしながら、JSONサポートはJAX-RS (JSR 311)やJAXB (JSR 222)の一部ではないので、GlassFish Server以外のJava EE実装では動作しません。
The Java API for JSON Processing (JSR 353)は、JavaにおけるJSONバインディングをサポートしません。Java EEの将来のリリースでJAXB for XMLのようなJSR(JSON Binding)が検討されています。
JAX-RSリソースメソッドではJava API for JSON Processingを使用できます。詳細については、Java EE 7 SDKに含まれるJSON Processingのサンプルコードを参照してください。
19.6 The jsonpmodel Example Application
このセクションではjsonpmodel
サンプルアプリケーションのビルドと実行方法を説明します。このサンプルはwebアプリケーションで、フォームデータからのオブジェクトモデル作成、JSONデータのパース、オブジェクトモデルAPIを使用したJSONデータの書き込み、の方法を示します。
jsonpmodel
サンプルアプリケーションは、tut-install/examples/web/jsonp/jsonpmodel
ディレクトリ*2にあります。
19.6.1 Components of the jsonpmodel Example Application
jsonpmodel
サンプルアプリケーションは以下のファイルから構成されています。
- 三つのJSFページ。
index.xhtml
ページ。フォーム入力用。modelcreated.xhtml
ページ。JSONデータをテキストエリアに表示する。parsejson.xhtml
ページ。オブジェクトモデルの要素をテーブルで表示する。
ObjectModelBean.java
マネージドbean。セッションスコープのマネージドbeanで、フォームのデータを格納し、Faceletsページ間のナビゲーションを行う。また、JSONオブジェクトモデルAPIを使用するコードも含まれる。
ObjectModelBean.java
で、フォームのデータからオブジェクトモデルを生成するために使用されるコードは、Creating an Object Model from Application Codeの例と同様です。モデルからJSON出力を書き込むためのコードはWriting an Object Model to a Streamの例と同様です。オブジェクトモデルのツリーをナビゲートするコードはNavigating an Object Modelの例と同様です。
19.6.2 Running the jsonpmodel Example Application
このセクションではNetBeans IDEとコマンドラインを使用してjsonpmodel
サンプルアプリケーションを動作させる方法を説明します。
19.6.2.1 To Run the jsonpmodel Example Application Using NetBeans IDE
- GlassFishサーバが実行中なことを確認(Starting and Stopping GlassFish Serverを参照)
- FileメニューからOpen Projectを選択
- Open Projectダイアログボックスから以下のディレクトリに移動。
tut-install/examples/web/jsonp
jsonpmodel
フォルダを選択。- Open Projectをクリック。
- Projectsタブで
jsonpmodel
プロジェクトを右クリックしてRunを選択。
このコマンドはアプリケーションをビルドしてWARファイル(jsonpmodel.war
)にパッケージしてtarget
ディレクトリに配置し、サーバにデプロイし、以下のURLでwebブラウザーを開きます。
http://localhost:8080/jsonpmodel/
- ページ上のデータを編集してフォームをサブミットするためにCreate a JSON Objectをクリックします。その次のページはフォームデータのJSONオブジェクトを表示します。
- Parse JSONをクリック。その次のページはオブジェクトモデルツリーのノード一覧のテーブルを表示します。
19.6.2.2 To Run the jsonpmodel Example Application Using Maven
- GlassFishサーバが実行中なことを確認(Starting and Stopping GlassFish Serverを参照)
- ターミナルで以下に移動:
tut-install/examples/web/jsonp/jsonpmodel
- アプリケーションをデプロイするために以下のコマンドを実行。
mvn install
- webブラウザを開いて以下のアドレスを入力。
http://localhost:8080/jsonpmodel/
- ページでデータを入力してフォームをサブミットするためにCreate a JSON Objectをクリックします。その次のページはフォームデータのJSONオブジェクトを表示します。
- Parse JSONをクリック。その次のページはオブジェクトモデルツリーのノード一覧のテーブルを表示します。
19.7 The jsonpstreaming Example Application
このセクションではjsonpstreaming
サンプルアプリケーションのビルドと実行方法を説明します。このサンプルはwebアプリケーションで、フォームデータからJSONデータ作成、JSONデータのパース、ストリーミングAPIを使用したJSONデータの書き込み、の方法を示します。
jsonpstreaming
サンプルアプリケーションは、tut-install/examples/web/jsonp/jsonpstreaming
ディレクトリ*3にあります。
19.7.1 Components of the jsonpstreaming Example Application
jsonpstreaming
サンプルアプリケーションは以下のファイルから構成されています。
- 三つのJSFページ。
index.xhtml
ページ。フォーム入力用。filewritten.xhtml
ページ。JSONデータをテキストエリアに表示する。parsed.xhtml
ページ。パーサーのイベントリストをテーブルで表示する。
StreamingBean.java
マネージドbean。セッションスコープのマネージドbeanで、フォームのデータを格納し、Faceletsページ間のナビゲーションを行う。また、JSONストリーミングAPIを使用するコードも含まれる。
StreamingBean.java
で、ファイルにJSONデータを書き込むために使用されるコードは、Writing JSON Data Using a Generatorの例と同様です。ファイルからJSONデータをパースするコードはReading JSON Data Using a Parserの例と同様です。
19.7.2 Running the jsonpstreaming Example Application
このセクションではNetBeans IDEとコマンドラインを使用してjsonpstreaming
サンプルアプリケーションを動作させる方法を説明します。
19.7.2.1 To Run the jsonpstreaming Example Application Using NetBeans IDE
- GlassFishサーバが実行中なことを確認(Starting and Stopping GlassFish Serverを参照)
- FileメニューからOpen Projectを選択
- Open Projectダイアログボックスから以下のディレクトリに移動。
tut-install/examples/web/jsonp
jsonpstreaming
フォルダを選択。- Open Projectをクリック。
- Projectsタブで
jsonpstreaming
プロジェクトを右クリックしてRunを選択。
このコマンドはアプリケーションをビルドしてWARファイル(jsonpstreaming .war
)にパッケージしてtarget
ディレクトリに配置し、サーバにデプロイし、以下のURLでwebブラウザーを開きます。
http://localhost:8080/jsonpstreaming/
- ページ上のデータを編集してフォームをサブミットしてJSONオブジェクトをテキストファイルに書き込むためにWrite a JSON Object to a Fileをクリックします。その次のページはテキストファイルの中身を表示します。
- Parse JSON from Fileをクリック。その次のページはテキストファイルのJSONデータのパーサーイベントのリストをテーブルで表示します。
19.7.2.2 To Run the jsonpstreaming Example Application Using Maven
- GlassFishサーバが実行中なことを確認(Starting and Stopping GlassFish Serverを参照)
- ターミナルで以下に移動:
tut-install/examples/web/jsonp/jsonpstreaming/
- アプリケーションをデプロイするために以下のコマンドを実行。
mvn install
- webブラウザを開いて以下のアドレスを入力。
http://localhost:8080/jsonpstreaming/
- ページ上のデータを編集してフォームをサブミットしてJSONオブジェクトをテキストファイルに書き込むためにWrite a JSON Object to a Fileをクリックします。その次のページはテキストファイルの中身を表示します。
- Parse JSON from Fileをクリック。その次のページはテキストファイルのJSONデータのパーサーイベントのリストをテーブルで表示します。
19.8 Further Information about the Java API for JSON Processing
Java EEにおけるJSON処理の詳細な情報については、Java API for JSON Processingの仕様を参照してください。
https://www.jcp.org/en/jsr/detail?id=353
関連リンク
- The Java EE 7 Tutorialのテキトー翻訳まとめ - Qiita - Java EE 7 Tutorialのうち、自分がテキトー翻訳したものの一覧
*1:原文では下記の一覧からそのページへのリンクがあるが、めんどいので省略
*2:https://java.net/projects/javaeetutorial/sources/svn/show/trunk/examples/web/jsonp/jsonpmodel と思われる
*3:https://java.net/projects/javaeetutorial/sources/svn/show/trunk/examples/web/jsonp/jsonpstreaming と思われる