---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# JSONStreamingBuilder - スコープ指定

# JSONStreamingBuilder - スコープ指定 {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：19分

大規模なストリーミング JSON ペイロードをビルドするために使用するビルダーオブジェクトを作成し、REST または SOAP 要求で使用して大量のデータをサードパーティ API に送信します。非ストリーミングオプション用の JSON 文字列としてペイロードを作成することもできます。
これらのメソッドを ワークフロースタジオ スクリプトステップで `sn_ih` 名前空間識別子とともに使用します。たとえば、この API を使用して ワークフロースタジオ スクリプトステップで JSON ペイロードを作成し、戻り値を REST ステップに渡して、要求をサードパーティサービスに送信できます。詳細については、「ワークフロースタジオ [スクリプトステップ](https://www.servicenow.com/docs/access?context=javascript-step-action-designer&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US)」を参照してください。

この API は ワークフロースタジオ 環境内でのみ使用できます。

## API 呼び出し順 {#JSONStreamingBuilderScopedAPI__section_owy_pd5_hlb}

次の API を順番に使用して JSON ペイロードを生成します。  

JSONStreamingBuilder：ビルダーオブジェクトを作成する
:   下記のメソッドを次の順番で使用して、ビルダーオブジェクトを作成します。  
    1. JSONStreamingBuilder()：JSONStreamingBuilder オブジェクトをインスタンス化します。{#JSONStreamingBuilderScopedAPI__json-api-constructor}
    2. withAttachment()：オプション。ストリーミング添付ファイルとして JSON オブジェクトを作成し、ストリーミング添付ファイル \[streaming_attachment\] テーブルに格納します。このメソッドを呼び出さない場合、API はペイロードを JSON 文字列として作成します。{#JSONStreamingBuilderScopedAPI__with-attachments}
    3. expiresAt()：オプション。添付ファイルの有効期限が切れる時刻を設定します。withAttachment() メソッドも呼び出す必要があります。{#JSONStreamingBuilderScopedAPI__expires-at}
    4. build()：JSONStreamingAPI オブジェクトを返します。{#JSONStreamingBuilderScopedAPI__build}
    {#JSONStreamingBuilderScopedAPI__ol_obn_dd5_hlb}

JSONStreamingAPI：JSON ペイロードをビルドする
:   下記のメソッドを次の順番で使用して、JSON ペイロードを作成します。  
    1. startObject()：親 JSON オブジェクトを作成します。{#JSONStreamingBuilderScopedAPI__start-object}
    2. JSON のキーと値のペアを生成するメソッド ：writeFieldName()、 writeString()、 writeNumberField() など。
    3. endObject()：親 JSON オブジェクトを閉じます。{#JSONStreamingBuilderScopedAPI__end-object}
    4. getJSONString() または getAttachmentId()：作成した JSON 文字列または添付ファイル ID を返します。
    5. close()：JSONStreamingAPI オブジェクトを閉じます。{#JSONStreamingBuilderScopedAPI__close}
    {#JSONStreamingBuilderScopedAPI__ol_yzk_qgn_hlb}

## サイズ制限 {#JSONStreamingBuilderScopedAPI__section_qkj_sd5_hlb}

この API を介して生成されたペイロードは、次のサイズ制限を超えることはできません。  
* 添付ファイル：200 MB
* 文字列：5 MB
{#JSONStreamingBuilderScopedAPI__ul_llq_msw_3lb}

## 例 {#JSONStreamingBuilderScopedAPI__section_nzz_rd5_hlb}

この例では、JSON オブジェクトを作成し、定義された有効期限とともに添付ファイル \[sys_attachment\] テーブルに格納する方法を示します。  

    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.JSONStreamingBuilder()
        .withAttachment() // Creates the JSON object in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the JSONStreamingAPI object. 

      builder.startObject()  // Begins generating the JSON object.
    	.writeFieldName("firstName")  // Adds a "firstName" field 
    	.writeString("John")          // Writes the value of the "firstName" field
    	.writeFieldName("lastName")
    	.writeString("Smith")
    	.writeNumberField("age","25") // Write a number field named "age" with value "25"
    	.writeFieldName("address")
    	.startObject()                // Start a new object nested under the parent object
    		.writeStringField("streetAddress", "21 2nd Street")
    		.writeStringField("city", "Santa Clara")
    		.writeStringField("state", "CA")
    		.writeStringField("postalCode", "11111")
    	.endObject()
    	.writeFieldName("phoneNumber")
    	.startArray()                    // Start an array 
    		.startObject()               // Add the first object to the array 
    			.writeFieldName("type")
    			.writeString("home")
    			.writeFieldName("number")
    			.writeString("212 555-1234")
    		.endObject()
    		.startObject()               // Add another object to the array 
    			.writeFieldName("type")
    			.writeString("fax")
    			.writeFieldName("number")
    			.writeString("646 555-4567")
    		.endObject()
    	.endArray()
    	.endObject()

      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } 

    catch (err) {
      gs.log(err);
    } 

    finally {
      builder.close();
    }

一方この例は、スクリプトステップで API を使用してペイロードを JSON 文字列として作成する方法を示しています。このオプションを使用すると、5 MB 未満のペイロードを作成できます。  

    (function execute(inputs, outputs) {

      var builder = new sn_ih.JSONStreamingBuilder().build();
      
      builder.startObject()
        .enablePrettyPrint()
        .writeTextElement("firstName","John")
        .writeString("John")
        .writeFieldName("lastName")
        .writeString("Smith")
        .writeNumberField("age","25")
        .writeFieldName("address")
        .startObject()
          .writeStringField("streetAddress", "21 2nd Street")
          .writeStringField("city", "Santa Clara")
          .writeStringField("state", "CA")
          .writeStringField("postalCode", "11111")
        .endObject()
        .writeFieldName("phoneNumber")
        .startArray()
          .startObject()
            .writeFieldName("type")
            .writeString("home")
            .writeFieldName("number")
            .writeString("212 555-1234")
          .endObject()
          .startObject()
            .writeFieldName("type")
            .writeString("fax")
            .writeFieldName("number")
            .writeString("646 555-4567")
          .endObject()
        .endArray()
        .endObject()

      outputs.payload = builder.getJSONString();
      
    })(inputs, outputs);

出力：  

    {
    "firstName" : "John",
    "lastName" : "Smith",
    "age" : 25,
    "address" : {
      "streetAddress" : "21 2nd Street",
      "city" : "Santa Clara",
      "state" : "CA",
      "postalCode" : "11111"
    },
    "phoneNumber" : [ {
      "type" : "home",
      "number" : "212 555-1234"
    }, {
      "type" : "fax",
      "number" : "646 555-4567"
    } ]
    }

## JSONStreamingBuilder - JSONStreamingBuilder() {#ariaid-title2}

JSONStreamingBuilder オブジェクトをインスタンス化します。
{#JSB-JSONStreamingBuilder__table_mkq_q22_1lb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 1. パラメーター]

{#JSB-JSONStreamingBuilder__table_mkq_q22_1lb}  

    var builder = new sn_ih.JSONStreamingBuilder()

## JSONStreamingBuilder - build() {#ariaid-title3}

JSONStreamingAPI オブジェクトを返します。
{#JSB-build__table_g3z_zf2_1lb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 2. パラメーター]

{#JSB-build__table_g3z_zf2_1lb} {#JSB-build__table_h3z_zf2_1lb__entry__2}

| タイプ | 説明 |
|-|-|
| JSONStreamingAPI | ペイロードのビルドに使用されるストリーミング JSON オブジェクト。 |
[表 : 3. 返される内容]

{#JSB-build__table_h3z_zf2_1lb}  
この例では、JSON オブジェクトを作成し、定義された有効期限とともに添付ファイル \[sys_attachment\] テーブルに格納する方法を示します。

    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.JSONStreamingBuilder()
        .withAttachment() // Creates the JSON object in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the JSONStreamingAPI object. 

      builder.startObject()  // Begins generating the JSON object.
    	.writeFieldName("firstName")  // Adds a "firstName" field 
    	.writeString("John")          // Writes the value of the "firstName" field
    	.writeFieldName("lastName")
    	.writeString("Smith")
    	.writeNumberField("age","25") // Write a number field named "age" with value "25"
    	.writeFieldName("address")
    	.startObject()                // Start a new object nested under the parent object
    		.writeStringField("streetAddress", "21 2nd Street")
    		.writeStringField("city", "Santa Clara")
    		.writeStringField("state", "CA")
    		.writeStringField("postalCode", "11111")
    	.endObject()
    	.writeFieldName("phoneNumber")
    	.startArray()                    // Start an array 
    		.startObject()               // Add the first object to the array 
    			.writeFieldName("type")
    			.writeString("home")
    			.writeFieldName("number")
    			.writeString("212 555-1234")
    		.endObject()
    		.startObject()               // Add another object to the array 
    			.writeFieldName("type")
    			.writeString("fax")
    			.writeFieldName("number")
    			.writeString("646 555-4567")
    		.endObject()
    	.endArray()
    	.endObject()

      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } 

    catch (err) {
      gs.log(err);
    } 

    finally {
      builder.close();
    }

## JSONStreamingBuilder - expiresAt(オブジェクト expiresAt) {#ariaid-title4}

添付ファイルの有効期限が切れる時刻を設定します。withAttachment() メソッドも呼び出す必要があります。 このメソッドを呼び出さないと、添付ファイルは作成後 2 時間で期限切れになります。
{#JSB-expiresAt_O__table_wlk_hzt_hlb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| expiresAt | [GlideDateTime](https://servicenow-prod.fluidtopics.net/xWri1nmJyGLw7m~IPzfcdg#c_GlideDateTimeScoped "スコープ指定された GlideDateTime クラスは、GlideDateTime オブジェクトに対する操作を実行するためのメソッドを提供します。") | 添付ファイルの有効期限が切れるまでの時間を設定するオブジェクト。 * 最小値：添付ファイルが作成されてから 7200 秒 (2 時間)。デフォルトです。 * 最大値：添付ファイルが作成されてから 172800 秒 (48 時間)。 {#JSB-expiresAt_O__ul_xsc_trx_3lb} |
[表 : 4. パラメーター]

{#JSB-expiresAt_O__table_wlk_hzt_hlb} {#JSB-expiresAt_O__table_xlk_hzt_hlb__entry__2}

| タイプ | 説明 |
|-|-|
| JSONStreamingBuilder | JSON ペイロードを開始するために使用するビルダーオブジェクト。 |
[表 : 5. 返される内容]

{#JSB-expiresAt_O__table_xlk_hzt_hlb}  
この例では、JSON オブジェクトを作成し、定義された有効期限とともに添付ファイル \[sys_attachment\] テーブルに格納する方法を示します。

    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.JSONStreamingBuilder()
        .withAttachment() // Creates the JSON object in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the JSONStreamingAPI object. 

      builder.startObject()  // Begins generating the JSON object.
    	.writeFieldName("firstName")  // Adds a "firstName" field 
    	.writeString("John")          // Writes the value of the "firstName" field
    	.writeFieldName("lastName")
    	.writeString("Smith")
    	.writeNumberField("age","25") // Write a number field named "age" with value "25"
    	.writeFieldName("address")
    	.startObject()                // Start a new object nested under the parent object
    		.writeStringField("streetAddress", "21 2nd Street")
    		.writeStringField("city", "Santa Clara")
    		.writeStringField("state", "CA")
    		.writeStringField("postalCode", "11111")
    	.endObject()
    	.writeFieldName("phoneNumber")
    	.startArray()                    // Start an array 
    		.startObject()               // Add the first object to the array 
    			.writeFieldName("type")
    			.writeString("home")
    			.writeFieldName("number")
    			.writeString("212 555-1234")
    		.endObject()
    		.startObject()               // Add another object to the array 
    			.writeFieldName("type")
    			.writeString("fax")
    			.writeFieldName("number")
    			.writeString("646 555-4567")
    		.endObject()
    	.endArray()
    	.endObject()

      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } 

    catch (err) {
      gs.log(err);
    } 

    finally {
      builder.close();
    }

## JSONStreamingBuilder - withAttachment() {#ariaid-title5}

ストリーミング添付ファイルとして JSON オブジェクトを作成し、ストリーミング添付ファイル \[streaming_attachment\] テーブルに格納します。このメソッドを呼び出さない場合、API はペイロードを JSON 文字列として作成します。
{#JSB-withAttachment__table_fm2_dzt_hlb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 6. パラメーター]

{#JSB-withAttachment__table_fm2_dzt_hlb} {#JSB-withAttachment__table_gm2_dzt_hlb__entry__2}

| タイプ | 説明 |
|-|-|
| JSONStreamingBuilder | JSON ペイロードを開始するために使用するビルダーオブジェクト。 |
[表 : 7. 返される内容]

{#JSB-withAttachment__table_gm2_dzt_hlb}  
この例は、JSON ペイロードを構築して添付ファイルとして保存する方法を示しています。

    try {
      var ttl = new GlideDateTime("2011-01-01 12:00:00");
      var builder = new sn_ih.JSONStreamingBuilder()
        .withAttachment() // Creates the JSON object in streaming mode within an attachment.
        .expiresAt(ttl) // Sets an expiration date for the attachment.
        .build(); // Creates the JSONStreamingAPI object. 

      builder.startObject()  // Begins generating the JSON object.
    	.writeFieldName("firstName")  // Adds a "firstName" field 
    	.writeString("John")          // Writes the value of the "firstName" field
    	.writeFieldName("lastName")
    	.writeString("Smith")
    	.writeNumberField("age","25") // Write a number field named "age" with value "25"
    	.writeFieldName("address")
    	.startObject()                // Start a new object nested under the parent object
    		.writeStringField("streetAddress", "21 2nd Street")
    		.writeStringField("city", "Santa Clara")
    		.writeStringField("state", "CA")
    		.writeStringField("postalCode", "11111")
    	.endObject()
    	.writeFieldName("phoneNumber")
    	.startArray()                    // Start an array 
    		.startObject()               // Add the first object to the array 
    			.writeFieldName("type")
    			.writeString("home")
    			.writeFieldName("number")
    			.writeString("212 555-1234")
    		.endObject()
    		.startObject()               // Add another object to the array 
    			.writeFieldName("type")
    			.writeString("fax")
    			.writeFieldName("number")
    			.writeString("646 555-4567")
    		.endObject()
    	.endArray()
    	.endObject()

      gs.log(builder.getAttachmentId()); // Returns the sys_id of the attachment.
    } 

    catch (err) {
      gs.log(err);
    } 

    finally {
      builder.close();
    }

この例は、JSON ペイロードを構築して文字列として保存する方法を示しています。

    try {
      var builder = new sn_ih.JSONStreamingBuilder().build();

      builder.startObject()
        .writeFieldName("firstName")
        .writeString("John")
        .writeFieldName("lastName")
        .writeString("Smith")
        .writeNumberField("age","25")
        .writeFieldName("address")
        .startObject()
        .writeStringField("streetAddress", "21 2nd Street")
        .writeStringField("city", "Santa Clara")
        .writeStringField("state", "CA")
        .writeStringField("postalCode", "11111")
        .endObject()
        .writeFieldName("phoneNumber")
        .startArray()
        .startObject()
        .writeFieldName("type")
        .writeString("home")
        .writeFieldName("number")
        .writeString("212 555-1234")
        .endObject()
        .startObject()
        .writeFieldName("type")
        .writeString("fax")
        .writeFieldName("number")
        .writeString("646 555-4567")
        .endObject()
        .endArray()
        .endObject()

      gs.log(builder.getJSONString());
    } 

    catch (err) {
      gs.log("Exception: " + err);
    } 

    finally {
      builder.close();
    }

出力：

    {
    "firstName" : "John",
    "lastName" : "Smith",
    "age" : 25,
    "address" : {
      "streetAddress" : "21 2nd Street",
      "city" : "Santa Clara",
      "state" : "CA",
      "postalCode" : "11111"
    },
    "phoneNumber" : [ {
      "type" : "home",
      "number" : "212 555-1234"
    }, {
      "type" : "fax",
      "number" : "646 555-4567"
    } ]
    }


