Talendコンポーネント活用（２）Jsonファイル出力

#**Jsonファイルへの出力処理**
[前回](https://qiita.com/Stagea/items/21f1333425d9a53cea3f)はJsonファイルからの入力処理を紹介しましたが、今回はJsonファイルへの出力処理を紹介します。

#**入力データ**
前回の入力処理で出力したCSVファイルからデータを読み込みます。
![JSON_Input_Sample.csv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/70e32b9c-6c3f-b1af-4e6a-8c8525f2dabc.jpeg)

#**Json出力ファイルのメタデータ定義作成**
リポジトリ→メタデータ→File Jsonの上で右クリックしJSONの作成をクリックします。
![メタデータ_JSON作成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/9dbbb59e-d324-e3cd-608e-ab3a7e0797a6.jpeg)

Step1では名前（必須）、目的、説明を入力します。
![Onput_Sample_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/a5909052-b298-cf8c-6d05-fe447a419fcf.jpeg)

Step2ではOnput Jsonを選択します。
![Onput_Sample_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/3c88c8f0-06e4-3e63-4664-7eb7b6a235de.jpeg)

Step3ではCreate from a fileを選択し、JSON File右端の参照ボタンをクリックして出力する内容で定義されているJsonファイルを選択します。
![Onput_Sample_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/95ccfc8a-9c99-7c0c-7c6b-0a485288777b.jpeg)

Jsonファイルが正常に読み込まれるとFile ViewerとFile Contentが表示されますので、Nextボタンをクリックします。
読み込んだJsonファイルに誤りがある場合はエラーになりますので、Jsonファイルを再確認してください。
![Onput_Sample_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/c89af5a5-b165-557d-0255-1ebc38930468.jpeg)

Step4では出力する項目を定義します。
Step4に移行した時点ではJsonファイルから読み込まれた項目が表示されていますが、Require set as loopというエラーメッセージが表示されています。
![Onput_Sample_5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/652a10fd-b739-07e6-e2ec-a5f717e49c97.jpeg)

このJsonファイルではUserListがLoopの起点になりますので、Linker TagetのUserList上で右クリックしてSet As Loop Elementをクリックします。
Set As Loop Elementを設定しないと次のステップへは進むことができません。
![Onput_Sample_6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/027a1584-471d-eb70-b240-aabc69e58714.jpeg)

UserListのNode Statusにloop elementが表示されますので、Nextボタンをクリックします。
![Onput_Sample_7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/b900a13c-4414-9f9a-ee70-1647e71f9db6.jpeg)

Step5では各項目の最終確認を行いFinishボタンをクリックします。
![Onput_Sample_8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/645d8211-91bb-a8a1-7e80-7d0acfee0383.jpeg)

#**tFileOutputJSONコンポーネントの設定**
ジョブにtFileOutputJSONを配置すると、コンポーネントの初期設定は下図のようになっています。
![Output_Job2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/78076b4b-52f2-9ef8-e5fd-7109582a5fe9.jpeg)

スキーマを組み込みからリポジトリに変更して、リポジトリ欄の右にある参照ボタンをクリックします。
![Output_Job3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/5e731332-82ae-2c7c-1898-c0be6dda3fde.jpeg)

リポジトリの内容が表示されますので、選択可能なメタデータの一覧から作成したスキーマ定義を選択してOKボタンをクリックします。
![Output_Job4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/711e2de4-77f7-9ab4-7da9-681d4b2a1d1f.jpeg)

データブロックの名前に”UserList”を設定します。
![Output_Job5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/48f3abae-5a04-d1cf-35d0-2d2e04b9537a.jpeg)

tFileInputDelimitedとtFileOutputJSONをrowで接続すると、ターゲットコンポーネントのスキーマを取得しますか？のメッセージが表示されますのでYesボタンをクリックします。
![Output_Job6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/5d47de05-76d4-6dc5-9512-56af89bc0b64.jpeg)

tFileInputDelimitedにtFileOutputJSONで設定したスキーマが反映されます。
これでジョブの設定は完了です。
![Output_Job7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/7dcfd8de-318f-b26a-04a9-6ff391d5e2ee.jpeg)

#**実行後の出力結果**
出力された項目はスキーマで定義した順番とは異なっていました。
下図は成型して見やすくしておりますが、実際に出力されるJsonファイルには空白と改行は含まれておりませんでした。
![output.json_seikei.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463924/bfe249ea-9211-8992-4e43-6d3a55f29c84.jpeg)

#**まとめ**
Jsonファイル内容の見た目は異なっていますが、前回で入力したJsonファイルと同じ内容で出力することができました。
今後はメタデータのオプションや、tExtractJSONFieldsコンポーネント、tWriteJSONFieldコンポーネントにも触れていきたいと考えております。