Help us understand the problem. What is going on with this article?

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

やりたいこと

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

DataSpiderの仕様について

  • DataSpider内部では全てXML形式でデータが扱われているので、HTTPトリガーを通じてJSON形式のデータを受け付けた場合には、トリガー内でXMLに変換されます。逆にJSON形式のデータを返却したい場合についても、内部ではXMLで定義しますが、返却時にJSONに変換されます。詳しくはこちらを確認してください。

スクリプトサンプル

  • これはXMLのデータをJSON形式で返却するスクリプトです。
  • JSONの返却にはスクリプト変数を使いますので、XML型のスクリプト変数を作成してスクリプト出力変数として使用するにチェックを入れます。   sample.png

必要なデータ形式の確認

  • 取得したいデータはobjectarrayになっている以下のような形式だとします。
[
    {
        "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

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

スクリプトの作成

XMLファイルを読み込んでJSON形式で返却する処理を作成します。

 1. スクリプト変数を作成
 2. XML読取り処理を配置
 3. マッピングアイコンを配置
 4. Startからxml_readxml_readからmappingへ線を引いて、最後にEndへ。
 - json0.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

3.JSONファイルをXML形式に変換します。
 1.XMLへの変換はネットワークカテゴリにあるRESTアダプタを利用すると便利です。
 RESTであればどれでも大丈夫なのですが、今回はGETコンポーネントを利用します。
 json02.png

 2.GETコンポーネントのレスポンス設定を選択します。
 - データ出力先をデータ
 - データ形式をJSON
 - に設定してJSONファイルを指定して出力スキーマを設定...をクリックして、先程アップロードしたJSONファイルを指定します。
 json03.png

 3.次にマッパー上で出力スキーマを設定します。
 - mappingを開いて、スクリプト変数を右クリックしてスキーマを読み込むを選択します。
  json05.png

 - コンポーネントから選択のコンポーネント名でさっき設定したRESTのGETコンポーネントexecute_http_getを選択します。
  json06.png

 - 出力スキーマが展開されます。
  json07.png

 - 次にtype属性を指定します。今回はobjectarrayになっている形式なので、ツールパレットから単一行文字列定数コンポーネントを使って、それぞれ設定して完了です。
   httptrigger05.png

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

完成したらプロジェクトをサービスとして登録します。

httptrigger08.png

レスポンス確認

  • HTTPトリガーの設定をして実行確認を行ってください。
  • 以下のような出力結果が得られると思います。
[
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    }
]

レスポンスデータの編集

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

 httptrigger07.png

  • 修正が完了したらサービスに登録を忘れずに行い、再度リクエストを行ってみてください。以下のように形式が変換されます。
{
    {
        "id":"1",
        "first_name":"Steven",
        "last_name":"Thompson",
        "email":"sthompson0@spotify.com",
        "gender":"Male",
        "ip_address":"129.167.217.82"
    }
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away