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

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

More than 3 years have passed since last update.

やりたいこと

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 do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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