---
schema_version: "1"
id: 3445e1ce02a2a7ef7f257b23be98f14b4009a3130063f284a401aef3e6cdd8e3
title: JSON 形式
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.3/dataweave-formats-json.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats-json
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c3a5a581bcb32e98983a3a934571fb593d9d9e64c5286b87b3c4b14288c8d716
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# JSON 形式

MIME タイプ: `application/json`​

ID: `json`​

JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。 JSON では、​`String`​、​`Boolean`​、​`Number`​、​`Null`​、​`Object`​、​`Array`​ 型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。

JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。

- インデックス付き
- メモリ内
- ストリーミング

DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、​[「DataWeave 解析戦略」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers)​を参照してください。

## [](#examples)例

次の例は、JSON 形式の使用方法を示しています。

- [例: JSON を DataWeave (dw) 形式で表す](#example1)​
- [例: 繰り返される XML 要素を JSON に変換する](#example2)​
- [例: JSON データをストリーミングする](#example3)

### [](#example1)例: JSON を DataWeave (dw) 形式で表す

次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。

#### [](#入力)入力

次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。

```json
{
  "name": "Matias",
  "age": 8,
  "male": true,
  "kids": null,
  "brothers": ["Pedro", "Sara"]
}
```

#### [](#ソース)ソース

この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。

```dataweave
output application/dw
---
payload
```

#### [](#出力)出力

JSON 入力と ​`application/dw`​ 出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、​[「有効なキー」](https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-cookbook-extract-data#valid-keys)​を参照してください。

```dataweave
{
  name: "Matias",
  age: 8,
  male: true,
  kids: null,
  brothers: [
    "Pedro",
    "Sara"
  ]
}
```

### [](#example2)例: 繰り返される XML 要素を JSON に変換する

次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。

XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。

#### [](#入力-2)入力

次の XML データには、​`name`​ というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。

```xml
<?xml version='1.0' encoding='UTF-8'?>
<friends>
  <name>Mariano</name>
  <name>Shoki</name>
  <name>Tomo</name>
  <name>Ana</name>
</friends>
```

#### [](#ソース-2)ソース

次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。

スクリプトは、XML 入力から ​`name`​ 要素を選択し、DataWeave ​`map`​ 関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は ​`{ name : item }`​ のようになります。​`item`​ は ​`name`​ 要素の値です。配列全体は、​`friends`​ キーの値として機能します。

```dataweave
%dw 2.0
output application/json
---
friends: payload.friends.*name map (
            (item, index) -> {name: item}
         )
```

#### [](#出力-2)出力

この DataWeave スクリプトは、次の JSON オブジェクトを出力します。

```json
{
  "friends": [
    {
      "name": "Mariano"
    },
    {
      "name": "Shoki"
    },
    {
      "name": "Tomo"
    },
    {
      "name": "Ana"
    }
  ]
}
```

### [](#example3)例: JSON データをストリーミングする

ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。

#### [](#入力-3)入力

JSON 入力ペイロードは、XML 設定の入力として機能します。

JSON 入力 (切り捨てられています):

```json
{ "myJsonExample" : [
    {
      "name" : "Shoki",
      "zipcode": "95838"
    },
    {
      "name" : "Leandro",
      "zipcode": "95823"
    },
    {
      "name" : "Mariano",
      "zipcode": "95815"
    },
    {
      "name" : "Cristian",
      "zipcode": "95815"
    },
    {
      "name" : "Kevin",
      "zipcode": "95824"
    },
    {
      "name" : "Stanley",
      "zipcode": "95841"
    }
  ]
}
```

#### [](#xml-設定)XML 設定

次の XML 設定は、JSON 入力をストリーミングします。

```xml
<file:config name="File_Config" doc:name="File Config" />
<flow name="dw-streaming-jsonFlow" >
  <scheduler doc:name="Scheduler" >
    <scheduling-strategy >
      <fixed-frequency frequency="1" timeUnit="MINUTES"/>
    </scheduling-strategy>
  </scheduler>
  <file:read doc:name="Read"
     config-ref="File_Config"
     path="${app.home}/myjsonarray.json"
     outputMimeType="application/json; streaming=true"/>
  <ee:transform doc:name="Transform Message" >
    <ee:message >
      <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload.myJsonExample map ((element) -> {
returnedElement : element.zipcode
})]]></ee:set-payload>
    </ee:message>
  </ee:transform>
  <file:write doc:name="Write"
    path="/path/to/output/file/output.json"
    config-ref="File_Config1"/>
  <logger level="INFO" doc:name="Logger" message="#[payload]"/>
</flow>
```

- このストリーミング例では、​`outputMimeType="application/json; streaming=true"`​ を設定して、JSON 入力をストリーミングするように File Read 操作を設定します。 Studio UI では、リスナーの ​**\[MIME Type (MIME タイプ)\]**​ を ​`application/json`​ に設定し、MIME タイプの ​**\[Parameters (パラメーター)\]**​ を ​**\[Key (キー)\]**​ ​`streaming`​ と ​**\[Value (値)\]**​ ​`true`​ に設定できます。
- **Transform Message**​ コンポーネントの DataWeave スクリプトは、入力ペイロードの配列を反復処理し、その ​`zipcode`​ 値を選択します。
- Write 操作によって、変換の結果が含まれるファイル (​`output.json`​) が返されます。
- Logger は、​`output.json`​ に表示されるものと同じ出力ペイロードを出力します。

#### [](#出力-3)出力

この JSON ストリーミングの例では、オブジェクトの JSON 配列が生成されます。

```json
[
  {
    "returnedElement": "95838"
  },
  {
    "returnedElement": "95823"
  },
  {
    "returnedElement": "95815"
  },
  {
    "returnedElement": "95815"
  },
  {
    "returnedElement": "95824"
  },
  {
    "returnedElement": "95841"
  }
]
```

## [](#properties)Configuration のプロパティ

DataWeave では、JSON の次の設定プロパティがサポートされています。

### [](#リーダープロパティ-json)リーダープロパティ (JSON)

JSON 形式では、入力データの読み込みの指示を提供するプロパティを使用できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 50.0002%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">型</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>streaming</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>入力をストリーミングするためのプロパティ。エントリを順次アクセスする場合のみ使用します。有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。
入力は最上位の配列である必要があります。DataWeave のストリーミングについての詳細は、​<a href="https://docs.mulesoft.com/jp/dataweave/2.3/dataweave-formats#dw_readers_writers" class="xref page">「DataWeave リーダー」</a>​を参照してください。</p>
</div></div></td>
</tr>
</tbody>
</table>

### [](#ライタープロパティ-json)ライタープロパティ (JSON)

JSON 形式では、出力データの書き込みの指示を提供するプロパティを使用できます。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 50.0002%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">型</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>bufferSize</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Number</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>8192</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ライターバッファのサイズ。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>deferred</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>​<code>true</code>​ に設定すると、DataWeave は出力をデータストリームとして生成し、スクリプトの実行はそれがコンシュームされるまで延期されます。有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>duplicateKeyAsArray</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>オブジェクトで重複キーが検出されると、ライターはその値をそれらのすべての値が含まれる配列に変更します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。JSON 言語では、1 つの同じ親を持つ重複キーは許可されないため、通常重複により例外が発生します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>encoding</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>UTF-8</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>出力で使用する文字セット。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>indent</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>true</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>JSON コードをインデントして読みやすくするか、JSON を 1 行に圧縮するかを示します。
有効な値は、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>skipNullOn</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>String</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>null</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>指定されたデータ構造の ​<code>null</code>​ 値をスキップします。デフォルトでは、値をスキップしません。有効な値は、​<code>arrays</code>​、​<code>objects</code>​、​<code>everywhere</code>​ です。</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>arrays</code><br>
JSON 出力の配列内の ​<code>null</code>​ 値を無視して除外します。たとえば、​<code>output application/json skipNullOn="arrays"</code>​ のようにします。</p>
</li>
<li>
<p><code>objects</code><br>
値が ​<code>null</code>​ のキー-値ペア (例: <code>output application/json skipNullOn="objects"</code>​) を無視します。</p>
</li>
<li>
<p><code>everywhere</code><br>
<code>skipNullOn</code>​ を配列とオブジェクトに適用します。たとえば、​<code>output application/json skipNullOn="everywhere"</code>​ のようにします。</p>
</li>
</ul>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>writeAttributes</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>Boolean</code></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">​<code>false</code></p></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>キーの属性をキーの子に追加するかどうかを指定します。新しい属性キー名の先頭は @ になります。有効なオプションは、​<code>true</code>​ または ​<code>false</code>​ です。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#mime_type)サポートされる MIME タイプ (JSON)

JSON 形式では、次の MIME タイプがサポートされています。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 100%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">MIME タイプ</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code>*/json</code>​</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code><strong>/</strong>+json</code>​</p></td>
</tr>
</tbody>
</table>