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 では、この形式の以下の設定プロパティがサポートされています。
この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
| パラメーター | 型 | デフォルト | 説明 | 
|---|---|---|---|
  | 
  | 
  | 
 有効な値は、  | 
この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
| パラメーター | 型 | デフォルト | 説明 | 
|---|---|---|---|
  | 
  | 
  | 
バッファライターのサイズ。  | 
  | 
  | 
  | 
 有効な値は、  | 
  | 
  | 
  | 
オブジェクト内の重複キーの値を複製されたキーに対する値の 1 つの配列に変換します。 有効な値は、  | 
  | 
  | 
  | 
出力で使用する文字セット (UTF-8 など)。  | 
  | 
  | 
  | 
デフォルトでは出力をインデントして読みやすくします。 有効な値は、  | 
  | 
  | 
  | 
指定されたデータ構造の  
 有効な値は   | 
  | 
  | 
  | 
キーの属性をそのキーの子キー-値のペアに変換します。属性キー名の先頭は @ になります。 有効な値は、  |