※本記事は、ASTERIA Warp 2406まで利用可能なJSONDecode/JSONEncodeコンポーネントについて解説しています。
JSONDecode/JSONEncodeコンポーネントは、ASTERIA Warp 2412から廃止されています。ASTERIA Warp 2412以降では、JSONストリームをご利用ください。下記のFAQをご参照ください。
FAQ:「JSONDecode/JSONEncodeコンポーネントの廃止後の対応を教えてください」
JSONDecode/JSONEncode/HttpEnd
JSON文字列をXML、ParameterList、Recordのいずれかのストリームへ変換するには、JSONDecodeコンポーネントを利用します。また、ストリームをJSON形式に変換するには、JSONEncodeコンポーネントか、HttpEndコンポーネントのプロパティを利用します。
JSONをストリーム変換する(JSONDecodeコンポーネント)
1.JSON文字列のストリームを含むフローを作成し、「ストリーム」タブからJSONDecodeコンポーネント(「JSONからストリームに変換します)」をドラッグして配置する
HINT
JSONDecodeコンポーネントでは、出力ストリームはXML、ParameterList、Recordのいずれか指定されたストリームフォーマットとなります。
2.出力のストリーム型を選択する
処理に合わせてその他のコンポーネントも配置、接続してフローを完成させます。
HINT
「JSON種別」プロパティでは、入力のJSON文字列が、(JSON)「オブジェクト」か「配列」かを指定します。「配列」を指定した場合は、このコンポーネントが起点となってループが開始され、配列の要素ごとに、JSONオブジェクトを変換して出力します。配列の要素がJSONオブジェクトでなかった場合は、各要素に対して"array"というキーを付加して、各要素ごとにJSONオブジェクトを新しく作成します。
ストリームをJSON形式に変換する(JSONEncodeコンポーネント)
1.FileGetコンポーネントなどで変換対象のストリームを指定し、「ストリーム」タブからJSONEncodeコンポーネント(「ストリームからJSONに変換します」)をドラッグして配置する
2.出力ストリームに応じて、JSONEncodeコンポーネントのプロパティを設定する
JSONEncodeコンポーネントの出力結果は、XMLストリームからの変換ではTextストリームになります。
HINT
出力のデータ型について
XMLストリームからの変換では、出力のデータ型はすべて文字列になります。それ以外のストリームからの変換ではフィールド定義のデータ型に従いますが、DateTime型は「2016-03-25T00:00:00.000 JST」のような形式の文字列になります。データ型がBinary型の場合は、Base64形式でエンコードした文字列になります。
ストリームをJSON形式に変換する(HttpEndコンポーネント)
1.フローをHttpEndコンポーネントで終了し、HttpEndコンポーネントの「JSON変換」プロパティで「する」または「する(インデント)」を指定する
2.JSON変換に関するその他のプロパティを指定する
「JSONPコールバック」プロパティでは、JSON変換した結果をJSONPとする場合のコールバック関数名を指定します。「JSONトップレベル名」プロパティでは、入力ストリームがCSV、Record、FixedLengthのときに、JSON形式をObjectまたはArrayにするかどうかを指定します。また、必要に応じて「Content-Type」プロパティを指定します。
CAUTION
Binary、Text、HTML、MIMEの各ストリームは、JSON変換できません。これらの入力ストリームに対してJSON変換が指定された場合は、実行時エラーになります。
HINT
HttpEndコンポーネントの「Content-Type」プロパティで「自動判別」を指定してJSON変換した場合、Content-Typeの値は、JSONPコールバックの指定がない場合は「application/json」、指定がある場合は「text/javascript」となります。必要に応じ、ストリームに合わせて変更してください。