WebAPIで構造化されたデータ(JSON)を受けとるには?

RESTServiceは、WebAPIのリクエスト結果がJSONである場合、変数に個別の結果を受けとることができます。

ここでは、RESTServiceでJSONデータを受け取る方法、ネストされたJSONデータを受け取る方法を説明します。

JSONデータを受け取る方法

例えば、GitHubのユーザ情報APIへGETリクエストを送ると、以下のようなJSONデータが返ってきます。

+ curl https://api.github.com/users/tominaga443
{
  "login": "tominaga443",
  "id": 6791091,
  "node_id": "MDQ6VXNlcjY3OTEwOTE=",
  "avatar_url": "https://avatars0.githubusercontent.com/u/6791091?v=4",
  "gravatar_id": "",
  "url": "https://api.github.com/users/tominaga443",
  "html_url": "https://github.com/tominaga443",
  ...
}

ここでは、RESTServiceでGitHubのAPIを呼び出し、「login」と「html_url」の結果を受け取るシナリオを作成してみます。

JSONのキー名と同じ名前の変数を使って、APIのリクエスト結果を受け取ることができます。

次の様に、「login」と「html_url」変数を作成します。

 

RESTServiceには次の設定を行います。

 

RESTServiceによってリクエスト結果を取得した場合、リザルトの変数に対応するキー名の値が格納されます。

 

ネストされたJSONデータを受け取る方法

RESTServiceでは、ネストされたJSONデータも受け取ることができます。

ネストされたJSONデータを受け取るには、次のように先頭に「STRUCT__」を付けた名前の変数を使用します。

 

例えば、APIのリクエスト結果が以下の場合、

{
    "user": {
        "login": "tominaga443",
        "id": 6791091
    }
}

「STRUCT__user__login」という変数をリザルトに追加することで、「userのlogin」の値(tominaga443)を取得できます。

 

また、以下のように、リクエスト結果に配列が含まれている場合、

{
    "users": [
        {
            "login": "tominaga443",
            "id": 6791091
        },
        {
            "login": "elvez",
            "id": 1234567
        }
    ]
}

「STRUCT__users__0__login」という変数で、「usersの配列0番目のlogin」の値(tominaga443)を取得できます。

さらにネストが深い場合でも、キー名と要素番号を「__」(アンダースコア2つ)で繋げることで値を取得できます。