パッケージ 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 で定義された文法に厳密に従う必要があります。
    関連事項:
    Json, JsonGeneratorFactory
    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      static StringSEPRETTY_PRINTING
      きれいに JSON を生成する設定プロパティ。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      voidclose()
      このジェネレーターを閉じ、それに関連付けられているすべてのリソースを解放します。
      voidflush()
      基になる出力ソースをフラッシュします。
      JsonGeneratorwrite​(boolean value)
      現在の配列、フィールド、ルートコンテキスト内に JSON の true または false の値を書き込みます。
      JsonGeneratorwrite​(double value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
      JsonGeneratorwrite​(int value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
      JsonGeneratorwrite​(long value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
      JsonGeneratorwrite​(JsonValue value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 値として書き込みます。
      JsonGeneratorwrite​(StringSE value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 文字列値として書き込みます。
      JsonGeneratorwrite​(StringSE name, boolean value)
      現在のオブジェクトコンテキストに JSON 名 / ブール値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, double value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, int value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, long value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, JsonValue value)
      現在のオブジェクトコンテキストに JSON の名前と値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, StringSE value)
      現在のオブジェクトコンテキストに JSON 名 / 文字列値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, BigDecimalSE value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
      JsonGeneratorwrite​(StringSE name, BigIntegerSE value)
      現在のオブジェクトコンテキストに JSON の名前と数値のペアを書き込みます。
      JsonGeneratorwrite​(BigDecimalSE value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
      JsonGeneratorwrite​(BigIntegerSE value)
      指定された値を現在の配列、フィールド、ルートコンテキスト内の JSON 数値として書き込みます。
      JsonGeneratorwriteEnd()
      現在のコンテキストの終わりを書き込みます。
      JsonGeneratorwriteKey​(StringSE name)
      JSON 名をコロンで書き込みます。
      JsonGeneratorwriteNull()
      現在の配列、フィールド、ルートコンテキスト内に JSON null 値を書き込みます。
      JsonGeneratorwriteNull​(StringSE name)
      現在のオブジェクトコンテキストに JSON 名 / null 値のペアを書き込みます。
      JsonGeneratorwriteStartArray()
      JSON 開始配列文字を書き込みます。
      JsonGeneratorwriteStartArray​(StringSE name)
      現在のオブジェクトコンテキストで JSON 名 / 開始配列文字のペアを書き込みます。
      JsonGeneratorwriteStartObject()
      JSON 開始オブジェクト文字を書き込みます。
      JsonGeneratorwriteStartObject​(StringSE name)
      現在のオブジェクトコンテキストに 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

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

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