JSON形式のレスポンスデータを作成する

#やりたいこと
DataSpiderではHTTPトリガー機能を利用してWebAPIを生成することができます。
今回はそのレスポンスとなるJSON形式のデータを作成します。

#DataSpiderの仕様について
- DataSpider内部では全てXML形式でデータが扱われているので、HTTPトリガーを通じてJSON形式のデータを受け付けた場合には、トリガー内でXMLに変換されます。逆にJSON形式のデータを返却したい場合についても、内部ではXMLで定義しますが、返却時にJSONに変換されます。詳しくは[こちら](https://www.hulft.com/help/ja-jp/DataSpider/dss42sp5/help/ja/trigger/http_trigger.html)を確認してください。

#スクリプトサンプル
- これはXMLのデータをJSON形式で返却するスクリプトです。
- JSONの返却にはスクリプト変数を使いますので、`XML型`のスクリプト変数を作成して`スクリプト出力変数として使用する`にチェックを入れます。
　 ![sample.png](https://qiita-image-store.s3.amazonaws.com/0/35843/e649b91b-8047-485e-6309-d3d860bafdcf.png)

#必要なデータ形式の確認
- 取得したいデータは`object`が`array`になっている以下のような形式だとします。

```
[
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    },
    {
        "id":"2",
        "first_name":"Doris",
        "last_name":"Daniels",
        "email":"ddaniels1@usgs.gov",
        "gender":"Female",
        "ip_address":"34.152.122.66"
    }
]
```    

- この場合、マッパーで出力データを以下のように設定する必要があります。
![httptrigger05.png](https://qiita-image-store.s3.amazonaws.com/0/35843/d84609f3-8514-e605-f9aa-f44870bf7797.png)

- では作成してみましょう。

#スクリプトの作成
##XMLファイルを読み込んでJSON形式で返却する処理を作成します。
　1. スクリプト変数を作成
　2. XML読取り処理を配置
　3. マッピングアイコンを配置
　4. `Start`から`xml_read`、`xml_read`から`mapping`へ線を引いて、最後に`End`へ。
　- ![json0.png](https://qiita-image-store.s3.amazonaws.com/0/35843/fb228ea3-c443-2bd5-ced4-b30137fa9863.png)

##次に返却したいJSON形式の設定を行います。
1.取得したいフォーマットのjsonファイルを作成します。今回はこちらを`MOCK_DATA.JSON`というファイル名にしました。

```
[
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    }
]
```    

2.作成したjsonファイルをDataSpiderのエクスプローラからアップロードします。
　![json01.png](https://qiita-image-store.s3.amazonaws.com/0/35843/a12cf7ab-17bc-f1ba-e4fa-919580abbe38.png)

3.JSONファイルをXML形式に変換します。
　1.XMLへの変換はネットワークカテゴリにあるRESTアダプタを利用すると便利です。
　RESTであればどれでも大丈夫なのですが、今回はGETコンポーネントを利用します。
　![json02.png](https://qiita-image-store.s3.amazonaws.com/0/35843/75b675f1-ea75-1c9e-7d46-87f103f3f761.png)

　2.GETコンポーネントの`レスポンス設定`を選択します。
　- データ出力先を`データ`
　- データ形式を`JSON`
　- に設定して`JSONファイルを指定して出力スキーマを設定...`をクリックして、先程アップロードしたJSONファイルを指定します。
　![json03.png](https://qiita-image-store.s3.amazonaws.com/0/35843/ce2b89f4-f0e6-61fb-d86c-03ca45c91b35.png)

　3.次にマッパー上で出力スキーマを設定します。
　- `mapping`を開いて、スクリプト変数を右クリックして`スキーマを読み込む`を選択します。
　　![json05.png](https://qiita-image-store.s3.amazonaws.com/0/35843/2d01c00a-b520-c3ba-3934-9d35646dc851.png)

　- `コンポーネントから選択`のコンポーネント名でさっき設定したRESTのGETコンポーネント`execute_http_get`を選択します。
　　![json06.png](https://qiita-image-store.s3.amazonaws.com/0/35843/2c297f10-e4e9-5b6d-f3e0-7486e9173d90.png)

　- 出力スキーマが展開されます。
　　![json07.png](https://qiita-image-store.s3.amazonaws.com/0/35843/fd77c9d1-fcce-5145-1000-ee63cad33fa5.png)

　- 次に`type`属性を指定します。今回は`object`が`array`になっている形式なので、ツールパレットから`単一行文字列定数`コンポーネントを使って、それぞれ設定して完了です。
　 　![httptrigger05.png](https://qiita-image-store.s3.amazonaws.com/0/35843/83721d18-2026-9517-dac9-7137a6c1d3c0.png)

　-  ここで利用したGETコンポーネントはスキーマの設定のためだけに利用したものですので、スキーマの設定が終わったら削除しましょう。以上で設定は完了です。

##完成したらプロジェクトをサービスとして登録します。
![httptrigger08.png](https://qiita-image-store.s3.amazonaws.com/0/35843/d5039289-0ce1-27a4-35b7-bef8a2e02390.png)

#レスポンス確認
- [HTTPトリガーの設定](http://qiita.com/appresso_wakino/items/c6845dab7c2acdebf0ff)をして実行確認を行ってください。
- 以下のような出力結果が得られると思います。 

```
[
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    }
]
```    

#レスポンスデータの編集
- このデータを`object`、`object`の形式に編集してみます。
- 設定は簡単で、マッパーのtype属性を両方`object`に設定するだけです。

　![httptrigger07.png](https://qiita-image-store.s3.amazonaws.com/0/35843/e754c099-96c8-deeb-a654-f370d1c635c3.png)

- 修正が完了したらサービスに登録を忘れずに行い、再度リクエストを行ってみてください。以下のように形式が変換されます。

```
{
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    }
}
```