パッケージ jakarta.json.stream
インターフェース JsonGenerator
- すべてのスーパーインターフェース:
AutoCloseableSE、CloseableSE、FlushableSE
JSON データをストリーミングで出力ソースに書き込みます。クラス
Json には、文字または出力ストリーム(WriterSE および OutputStreamSE)のジェネレーターを作成するメソッドが含まれています。次の例は、JSON ジェネレーターを作成する方法を示しています。
JsonGenerator generator = Json.createGenerator(...);
クラス JsonGeneratorFactory には、JsonGenerator インスタンスを作成するためのメソッドも含まれています。JsonGeneratorFactory は、次の例のように、複数のジェネレーターインスタンスを作成するときに使用する必要があります。
JsonGeneratorFactory factory = Json.createGeneratorFactory();
JsonGenerator generator1 = factory.createGenerator(...);
JsonGenerator generator2 = factory.createGenerator(...);
JSON オブジェクトは、writeStartObject() メソッドを呼び出し、write メソッドで名前と値のペアを追加することにより、JsonGenerator を使用して作成できます。
次の例は、空の JSON オブジェクトを生成する方法を示しています。
JsonGenerator generator = ...;
generator.writeStartObject().writeEnd().close();
JSON 配列は、writeStartArray() メソッドを呼び出し、write メソッドで値を追加することにより、JsonGenerator を使用して作成できます。次の例は、空の JSON 配列を生成する方法を示しています。
JsonGenerator generator = ...;
generator.writeStartArray().writeEnd().close();
その他の JSON 値(JSON オブジェクトまたは配列ではない)は、適切な write メソッドを呼び出すことによって作成できます。
次の例は、JSON 文字列を生成する方法を示しています。
JsonGenerator generator = ...;
generator.write("message").close();
JsonGenerator メソッドは、次の例のようにチェーンできます。
generator
.writeStartObject()
.write("firstName", "John")
.write("lastName", "Smith")
.write("age", 25)
.writeStartObject("address")
.write("streetAddress", "21 2nd Street")
.write("city", "New York")
.write("state", "NY")
.write("postalCode", "10021")
.writeEnd()
.writeStartArray("phoneNumber")
.writeStartObject()
.write("type", "home")
.write("number", "212 555-1234")
.writeEnd()
.writeStartObject()
.write("type", "fax")
.write("number", "646 555-4567")
.writeEnd()
.writeEnd()
.writeEnd();
generator.close();
上記のサンプルコードは、次の JSON(または同等のもの)を生成します。
{
"firstName": "John", "lastName": "Smith", "age": 25,
"address" : {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{"type": "home", "number": "212 555-1234"},
{"type": "fax", "number": "646 555-4567"}
]
}
生成された JSON テキストは、RFC 7159 で定義された文法に厳密に従う必要があります。フィールドのサマリー
フィールド方法の概要
修飾子と型メソッド説明voidclose()このジェネレーターを閉じ、それに関連付けられているすべてのリソースを解放します。voidflush()基になる出力ソースをフラッシュします。write(boolean value) 現在の配列、フィールド、ルートコンテキスト内に JSON の true または false の値を書き込みます。write(double value) 指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。write(int value) 指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。write(long value) 指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 値として書き込みます。指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 文字列値として書き込みます。現在のオブジェクトコンテキストに JSON 名 / ブール値のペアを書き込みます。現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。現在のオブジェクトコンテキストに JSON の名前と値のペアを書き込みます。現在のオブジェクトコンテキストに JSON 名 / 文字列値のペアを書き込みます。write(StringSE name, BigDecimalSE value) 現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。write(StringSE name, BigIntegerSE value) 現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。write(BigDecimalSE value) 指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。write(BigIntegerSE value) 指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。writeEnd()現在のコンテキストの終わりを書き込みます。JSON 名をコロンで書き込みます。現在の配列、フィールド、ルートコンテキスト内に JSON null 値を書き込みます。現在のオブジェクトコンテキストに JSON 名 / null 値のペアを書き込みます。JSON 開始配列文字を書き込みます。writeStartArray(StringSE name) 現在のオブジェクトコンテキストで JSON 名 / 開始配列文字のペアを書き込みます。JSON 開始オブジェクト文字を書き込みます。writeStartObject(StringSE name) 現在のオブジェクトコンテキストに JSON 名 / 開始オブジェクトの文字のペアを書き込みます。
フィールドの詳細
PRETTY_PRINTING
きれいに JSON を生成する設定プロパティ。すべてのプロバイダーがこのプロパティをサポートする必要があります。プロパティの値は何でもかまいません。- 関連事項:
メソッドの詳細
writeStartObject
JsonGenerator writeStartObject()JSON 開始オブジェクト文字を書き込みます。JSON の名前と値のペアをオブジェクトに書き込むことができる新しい子オブジェクトコンテキストを開始します。このメソッドは、配列コンテキスト、フィールドコンテキスト、コンテキストなし(コンテキストがまだ開始されていない場合)でのみ有効です。このメソッドは、コンテキストなしで 1 回だけ呼び出すことができます。- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出された場合、またはコンテキストなしで複数回呼び出された場合。
writeStartObject
現在のオブジェクトコンテキストに JSON 名 / 開始オブジェクトの文字のペアを書き込みます。JSON の名前と値のペアをオブジェクトに書き込むことができる新しい子オブジェクトコンテキストを開始します。- パラメーター:
name- 書き込まれる JSON 名 / オブジェクトペア内の名前- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
writeKey
JSON 名をコロンで書き込みます。有効なオプションが値を書き込んだり、オブジェクトまたは配列を開始したりするフィールドコンテキストを開始します。値を書き込むとフィールドコンテキストが閉じます。フィールド名の後にオブジェクトまたは配列が開始された場合、フィールドコンテキストはオブジェクト / 配列が閉じた後に閉じられます。- パラメーター:
name- json フィールドの名前- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合- 導入:
- 1.1
writeStartArray
JsonGenerator writeStartArray()JSON 開始配列文字を書き込みます。JSON 値を配列に書き込むことができる新しい子配列コンテキストを開始します。このメソッドは、配列コンテキスト、フィールドコンテキスト、コンテキストなし(コンテキストがまだ開始されていない場合)でのみ有効です。このメソッドは、コンテキストなしで 1 回だけ呼び出すことができます。- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出された場合、またはコンテキストなしで複数回呼び出された場合
writeStartArray
現在のオブジェクトコンテキストで JSON 名 / 開始配列文字のペアを書き込みます。JSON 値を配列に書き込むことができる新しい子配列コンテキストを開始します。- パラメーター:
name- 書き込まれる JSON 名 / 配列ペア内の名前- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
write
現在のオブジェクトコンテキストに JSON の名前と値のペアを書き込みます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前と値のペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と値のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
write
現在のオブジェクトコンテキストに JSON 名 / 文字列値のペアを書き込みます。指定された値は JSON 文字列値として書き込まれます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON 名 / 文字列ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON 名 / 文字列ペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
write
現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
write
現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。指定された値のtoString()は、書き込み用のテキスト値として使用されます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
write
現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
write
現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
write
現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列BigDecimal.valueOf(double).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)NumberFormatExceptionSE- 値が非数(NaN)または無限大の場合。JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
write
現在のオブジェクトコンテキストに JSON の名前とブール値のペアを書き込みます。値が true の場合、JSONtrue値を書き込み、それ以外の場合、JSONfalse値を書き込みます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON 名 / ブールペアの名前value- 現在の JSON オブジェクトに書き込まれる JSON の名前とブール値のペアの値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
writeNull
現在のオブジェクトコンテキストに JSON 名 / null 値のペアを書き込みます。- パラメーター:
name- 現在の JSON オブジェクトに書き込まれる JSON 名 / null ペアの名前- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがオブジェクトコンテキスト内で呼び出されない場合
writeEnd
JsonGenerator writeEnd()現在のコンテキストの終わりを書き込みます。現在のコンテキストが配列コンテキストの場合、このメソッドは配列の終わり文字(']' )を書き込みます。現在のコンテキストがオブジェクトコンテキストの場合、このメソッドはオブジェクト終了文字('}')を書き込みます。現在のコンテキストの終わりを書き込んだ後、親コンテキストが新しい現在のコンテキストになります。親コンテキストがフィールドコンテキストの場合、閉じられます。- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドがコンテキストなしで呼び出された場合。
write
指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 値として書き込みます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
write
指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 文字列値として書き込みます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
write
指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。指定された値のtoString()は、書き込み用のテキスト値として使用されます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。- 関連事項:
write
指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター。
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。- 関連事項:
write
指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
write
指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列new BigDecimal(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
write
指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列BigDecimal.valueOf(value).toString()は、書き込み用のテキスト値として使用されます。- パラメーター:
value- 現在の JSON 配列に書き込まれる値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。NumberFormatExceptionSE- 値が非数(NaN)または無限大の場合。
write
現在の配列、フィールド、ルートコンテキスト内に JSON の true または false の値を書き込みます。値が true の場合、このメソッドは JSONtrue値を書き込み、それ以外の場合は JSONfalse値を書き込みます。- パラメーター:
value-boolean値- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
writeNull
JsonGenerator writeNull()現在の配列、フィールド、ルートコンテキスト内に JSON null 値を書き込みます。- 戻り値:
- このジェネレーター
- 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
close
void close()このジェネレーターを閉じ、それに関連付けられているすべてのリソースを解放します。このメソッドは、基になる出力ソースを閉じます。基礎となるストリームは、完全な JSON オブジェクトが書き込まれた場合にのみ閉じられます。不完全なオブジェクトの場合、JsonGenerationException がスローされ、基になるストリームが閉じられません。- 次で指定:
- インターフェース
AutoCloseableSEのclose - 次で指定:
- インターフェース
CloseableSEのclose - 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)JsonGenerationException- 不完全な JSON が生成された場合
flush
void flush()基になる出力ソースをフラッシュします。ジェネレーターがバッファーに文字を保存した場合、フラッシュする前に、基礎となる出力ソースにすぐに書き込みます。- 次で指定:
- インターフェース
FlushableSEのflush - 例外:
JsonException- I/O エラーが発生した場合 (IOException は JsonException の原因となる)