Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMIME タイプ: application/json
ID: json
JSON データ形式では、値が DataWeave 値と 1 対 1 でマップされます。
JSON では、String
、Boolean
、Number
、Null
、Object
、Array
型がサポートされています。DataWeave では、これらの各値がネイティブにサポートされています。
JSON 入力の DataWeave リーダーでは、次の解析戦略がサポートされています。
インデックス付き
メモリ内
ストリーミング
DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、「DataWeave 解析戦略」を参照してください。
次の例は、JSON 形式の使用方法を示しています。
次の例は、JSON 入力が DataWeave (dw) 形式でどのように表されるのかを示しています。
次の JSON オブジェクトは、DataWeave ソースへの入力ペイロードとして機能します。
{
"name": "Matias",
"age": 8,
"male": true,
"kids": null,
"brothers": ["Pedro", "Sara"]
}
この DataWeave スクリプトは、JSON 入力ペイロードを DataWeave (dw) 形式と MIME タイプに変換します。
output application/dw
---
payload
JSON 入力と application/dw
出力では、キーのみが異なります。JSON キーは、引用符で囲まれています。これらの DataWeave (dw) キーでは、引用符は必要ありません。詳細は、「有効なキー」を参照してください。
{
name: "Matias",
age: 8,
male: true,
kids: null,
brothers: [
"Pedro",
"Sara"
]
}
次の例は、繰り返される XML 要素を JSON に変換する方法を示しています。
XML は、コレクションを繰り返される (無制限の) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。
次の XML データには、name
というキーを持つ、繰り返される子要素が含まれます。この XML は、DataWeave ソースへの入力ペイロードとして機能します。
<?xml version='1.0' encoding='UTF-8'?>
<friends>
<name>Mariano</name>
<name>Shoki</name>
<name>Tomo</name>
<name>Ana</name>
</friends>
次の DataWeave スクリプトは、XML 入力をペイロードとして取得し、そのペイロードを JSON 形式で出力します。
スクリプトは、XML 入力から name
要素を選択し、DataWeave map
関数を使用して、それらの要素の値をオブジェクトの配列にマップします。配列の各オブジェクトの形式は { name : item }
のようになります。item
は name
要素の値です。配列全体は、friends
キーの値として機能します。
%dw 2.0
output application/json
---
friends: payload.friends.*name map (
(item, index) -> {name: item}
)
ストリーミングを示すため、次の例では、配列内の各要素を一度に 1 つずつ読み取って、JSON ファイルをストリーミングします。
JSON 入力ペイロードは、XML 設定の入力として機能します。
{ "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 設定は、JSON 入力をストリーミングします。
<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
に表示されるものと同じ出力ペイロードを出力します。
DataWeave では、この形式の以下の設定プロパティがサポートされています。
この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター | 型 | デフォルト | 説明 |
---|---|---|---|
|
|
|
有効な値は、 |
この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター | 型 | デフォルト | 説明 |
---|---|---|---|
|
|
|
バッファライターのサイズ (バイト)。値は 8 よりも大きい必要があります。 |
|
|
|
有効な値は、 |
|
|
|
オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。 有効な値は、 |
|
|
|
出力で使用するエンコード (UTF-8 など)。 |
|
|
|
デフォルトでは出力をインデントして読みやすくします。 有効な値は、 |
|
|
|
指定されたデータ構造の
有効な値は |
|
|
|
キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。 有効な値は、 |