パッケージ jakarta.json.stream

インターフェース JsonGenerator

すべてのスーパーインターフェース:
AutoCloseableSECloseableSEFlushableSE

public interface JsonGenerator extends FlushableSE, CloseableSE
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 で定義された文法に厳密に従う必要があります。
関連事項:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    きれいに JSON を生成する設定プロパティ。
  • 方法の概要

    修飾子と型
    メソッド
    説明
    void
    このジェネレーターを閉じ、それに関連付けられているすべてのリソースを解放します。
    void
    基になる出力ソースをフラッシュします。
    write(boolean value)
    現在の配列、フィールド、ルートコンテキスト内に JSON の true または false の値を書き込みます。
    write(double value)
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
    write(int value)
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
    write(long value)
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 値として書き込みます。
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 文字列値として書き込みます。
    write(StringSE name, boolean value)
    現在のオブジェクトコンテキストに JSON 名 / ブール値のペアを書き込みます。
    write(StringSE name, double value)
    現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
    write(StringSE name, int value)
    現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
    write(StringSE name, long value)
    現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
    write(StringSE name, JsonValue value)
    現在のオブジェクトコンテキストに JSON の名前と値のペアを書き込みます。
    write(StringSE name, StringSE value)
    現在のオブジェクトコンテキストに JSON 名 / 文字列値のペアを書き込みます。
    現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
    現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
    指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
    現在のコンテキストの終わりを書き込みます。
    JSON 名をコロンで書き込みます。
    現在の配列、フィールド、ルートコンテキスト内に JSON null 値を書き込みます。
    現在のオブジェクトコンテキストに JSON 名 / null 値のペアを書き込みます。
    JSON 開始配列文字を書き込みます。
    現在のオブジェクトコンテキストで JSON 名 / 開始配列文字のペアを書き込みます。
    JSON 開始オブジェクト文字を書き込みます。
    現在のオブジェクトコンテキストに JSON 名 / 開始オブジェクトの文字のペアを書き込みます。
  • フィールドの詳細

    • PRETTY_PRINTING

      static final StringSE PRETTY_PRINTING
      きれいに JSON を生成する設定プロパティ。すべてのプロバイダーがこのプロパティをサポートする必要があります。プロパティの値は何でもかまいません。
      関連事項:
  • メソッドの詳細

    • writeStartObject

      JsonGenerator writeStartObject()
      JSON 開始オブジェクト文字を書き込みます。JSON の名前と値のペアをオブジェクトに書き込むことができる新しい子オブジェクトコンテキストを開始します。このメソッドは、配列コンテキスト、フィールドコンテキスト、コンテキストなし(コンテキストがまだ開始されていない場合)でのみ有効です。このメソッドは、コンテキストなしで 1 回だけ呼び出すことができます。
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出された場合、またはコンテキストなしで複数回呼び出された場合。
    • writeStartObject

      JsonGenerator writeStartObject(StringSE name)
      現在のオブジェクトコンテキストに JSON 名 / 開始オブジェクトの文字のペアを書き込みます。JSON の名前と値のペアをオブジェクトに書き込むことができる新しい子オブジェクトコンテキストを開始します。
      パラメーター:
      name - 書き込まれる JSON 名 / オブジェクトペア内の名前
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • writeKey

      JsonGenerator writeKey(StringSE name)
      JSON 名をコロンで書き込みます。有効なオプションが値を書き込んだり、オブジェクトまたは配列を開始したりするフィールドコンテキストを開始します。値を書き込むとフィールドコンテキストが閉じます。フィールド名の後にオブジェクトまたは配列が開始された場合、フィールドコンテキストはオブジェクト / 配列が閉じた後に閉じられます。
      パラメーター:
      name - json フィールドの名前
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
      導入:
      1.1
    • writeStartArray

      JsonGenerator writeStartArray()
      JSON 開始配列文字を書き込みます。JSON 値を配列に書き込むことができる新しい子配列コンテキストを開始します。このメソッドは、配列コンテキスト、フィールドコンテキスト、コンテキストなし(コンテキストがまだ開始されていない場合)でのみ有効です。このメソッドは、コンテキストなしで 1 回だけ呼び出すことができます。
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出された場合、またはコンテキストなしで複数回呼び出された場合
    • writeStartArray

      JsonGenerator writeStartArray(StringSE name)
      現在のオブジェクトコンテキストで JSON 名 / 開始配列文字のペアを書き込みます。JSON 値を配列に書き込むことができる新しい子配列コンテキストを開始します。
      パラメーター:
      name - 書き込まれる JSON 名 / 配列ペア内の名前
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • write

      JsonGenerator write(StringSE name, JsonValue value)
      現在のオブジェクトコンテキストに JSON の名前と値のペアを書き込みます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前と値のペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と値のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • write

      JsonGenerator write(StringSE name, StringSE value)
      現在のオブジェクトコンテキストに JSON 名 / 文字列値のペアを書き込みます。指定された値は JSON 文字列値として書き込まれます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON 名 / 文字列ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON 名 / 文字列ペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • write

      JsonGenerator write(StringSE name, BigIntegerSE value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列 new BigDecimal(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(StringSE name, BigDecimalSE value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。指定された値の toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(StringSE name, int value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列 new BigDecimal(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(StringSE name, long value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列 new BigDecimal(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(StringSE name, double value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。指定された値は、JSON 数値として書き込まれます。文字列 BigDecimal.valueOf(double).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON の名前 / 番号ペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前と番号のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      NumberFormatExceptionSE - 値が非数(NaN)または無限大の場合。
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • write

      JsonGenerator write(StringSE name, boolean value)
      現在のオブジェクトコンテキストに JSON の名前とブール値のペアを書き込みます。値が true の場合、JSON true 値を書き込み、それ以外の場合、JSON false 値を書き込みます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON 名 / ブールペアの名前
      value - 現在の JSON オブジェクトに書き込まれる JSON の名前とブール値のペアの値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合。
    • writeNull

      JsonGenerator writeNull(StringSE name)
      現在のオブジェクトコンテキストに JSON 名 / null 値のペアを書き込みます。
      パラメーター:
      name - 現在の JSON オブジェクトに書き込まれる JSON 名 / null ペアの名前
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがオブジェクトコンテキスト内で呼び出されない場合
    • writeEnd

      JsonGenerator writeEnd()
      現在のコンテキストの終わりを書き込みます。現在のコンテキストが配列コンテキストの場合、このメソッドは配列の終わり文字(']' )を書き込みます。現在のコンテキストがオブジェクトコンテキストの場合、このメソッドはオブジェクト終了文字('}')を書き込みます。現在のコンテキストの終わりを書き込んだ後、親コンテキストが新しい現在のコンテキストになります。親コンテキストがフィールドコンテキストの場合、閉じられます。
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドがコンテキストなしで呼び出された場合。
    • write

      JsonGenerator write(JsonValue value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 値として書き込みます。
      パラメーター:
      value - 現在の JSON 配列に書き込まれる値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(StringSE value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の 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

      JsonGenerator write(int value)
      指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列 new BigDecimal(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      value - 現在の JSON 配列に書き込まれる値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(long value)
      指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列 new BigDecimal(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      value - 現在の JSON 配列に書き込まれる値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
    • write

      JsonGenerator write(double value)
      指定された値を、現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。文字列 BigDecimal.valueOf(value).toString() は、書き込み用のテキスト値として使用されます。
      パラメーター:
      value - 現在の JSON 配列に書き込まれる値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
      NumberFormatExceptionSE - 値が非数(NaN)または無限大の場合。
    • write

      JsonGenerator write(boolean value)
      現在の配列、フィールド、ルートコンテキスト内に JSON の true または false の値を書き込みます。値が true の場合、このメソッドは JSON true 値を書き込み、それ以外の場合は JSON false 値を書き込みます。
      パラメーター:
      value - boolean 値
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
    • writeNull

      JsonGenerator writeNull()
      現在の配列、フィールド、ルートコンテキスト内に JSON null 値を書き込みます。
      戻り値:
      このジェネレーター
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - このメソッドが配列、ルート、フィールドコンテキスト内で呼び出されない場合。
    • close

      void close()
      このジェネレーターを閉じ、それに関連付けられているすべてのリソースを解放します。このメソッドは、基になる出力ソースを閉じます。基礎となるストリームは、完全な JSON オブジェクトが書き込まれた場合にのみ閉じられます。不完全なオブジェクトの場合、JsonGenerationException がスローされ、基になるストリームが閉じられません。
      次で指定:
      インターフェース AutoCloseableSEclose 
      次で指定:
      インターフェース CloseableSEclose 
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)
      JsonGenerationException - 不完全な JSON が生成された場合
    • flush

      void flush()
      基になる出力ソースをフラッシュします。ジェネレーターがバッファーに文字を保存した場合、フラッシュする前に、基礎となる出力ソースにすぐに書き込みます。
      次で指定:
      インターフェース FlushableSEflush 
      例外:
      JsonException - I/O エラーが発生した場合 (IOException は JsonException の原因となる)