2013/03/14

XMLをJSON/JSONPに変換するYahoo PipesのAPI

いまどきのAPIのレスポンスにJSON形式を使うのがトレンドだが、ちょっと昔のAPIになるとレスポンス形式にXMLを採用しているサービスもたくさんあります。XMLって個人的には好きではないんですよねー。そこで、今回の記事では、XMLをJSON/JSONPに変換するAPIがYahoo Pipesにあったので、紹介してみます。



API仕様

URLには変換したいXMLのURLを指定します。JSONPとして使う場合は、コールバック関数名を指定すればOKです。

http://pipes.yahoo.com/pipes/pipe.run?_id=DJEg41Ac3BG8IAI2E5PZnA&_callback=コールバック関数名&_render=json&path=パス&url=XMLのURL     (GET)

path (optional)
特定のXML要素以下を抜き出すためのパス(xPath)を指定する。未指定の場合はすべてを対象とする。例えば、RSS()の<channel>要素以下を取得したい場合は、"channel"と指定する(たぶんルートノードは含めない)。

_callback (optional)
JSONPの場合のみコールバック関数名を指定する。

レスポンス例

以下は、Livedoorが提供するWeather HacksRSSフィードをJSON変換してみた例です。Yahoo Pipes特有のヘッダーが付くので value.items 以下がメインのデータになります。
{
    "count": 1, 
    "value": {
        "callback": "", 
        "description": "Pipes Output", 
        "generator": "http://pipes.yahoo.com/pipes/", 
        "items": [
            {
                "author": "livedoor Weather Team.", 
                "category": "天気情報", 
                "copyright": "(C) NHN Japan Corp. All rights reserved.", 
                "description": "[ 福岡県の天気概況 ]  九州北部地方は、気圧の谷や寒気の影響で概ね曇りとなっています。

 九州北部地方の14日は、はじめ気圧の谷や寒気の影響で曇りとなります
が、高気圧に覆われて次第に晴れるでしょう。

 15日は、高気圧に覆われて晴れるでしょう。

 波の高さは、九州北部地方の沿岸の海域では14日は3メートル、15日...", 
                "generator": "http://weather.livedoor.com/", 
                "guid": {
                    "content": "http://weather.livedoor.com/area/forecast/400010?r=rss", 
                    "isPermaLink": "true"
                }, 
                "image": {
                    "height": "26", 
                    "link": "http://weather.livedoor.com/", 
                    "title": "livedoor 天気情報", 
                    "url": "http://weather.livedoor.com/img/cmn/livedoor.gif", 
                    "width": "118"
                }, 
                "item": [
                    {
                        "category": "PR", 
                        "description": "livedoor 天気情報「Weather Hacks」では一般のブロガーの皆さん向けにブログでお天気を表示できる、お天気プラグインを公開しました。使い方はとってもカンタン!手順に沿って作成したHTMLソースを自分のブログに貼り付けるだけです!", 
                        "image": {
                            "height": "50", 
                            "link": "http://weather.livedoor.com/weather_hacks/plugin.html?pref=40", 
                            "title": "お天気プラグイン - livedoor 天気情報", 
                            "url": "http://weather.livedoor.com/img/weather_hacks/news_title.gif", 
                            "width": "151"
                        }, 
                        "link": "http://weather.livedoor.com/weather_hacks/plugin.html?pref=40", 
                        "pubDate": "Thu, 14 Mar 2013 05:00:00 +0900", 
                        "title": "[ PR ] ブログで福岡県のお天気を簡単ゲット!"
                    }, 
                    {
                        "category": "天気予報", 
                        "day": "Thursday", 
                        "description": "14日(木)の天気は曇のち晴、最高気温は12℃ でしょう。", 
                        "image": {
                            "height": "31", 
                            "link": "http://weather.livedoor.com/area/forecast/400010?r=rss20130314", 
                            "title": null, 
                            "url": "http://weather.livedoor.com/img/icon/12.gif", 
                            "width": "50"
                        }, 
                        "link": "http://weather.livedoor.com/area/forecast/400010?r=rss20130314", 
                        "pubDate": "Thu, 14 Mar 2013 05:00:00 +0900", 
                        "title": "[ 14日(木)の天気 ] 福岡 - 曇のち晴 - 最高気温12℃ - 3月14日(木)"
                    }, 
                    ...
                ], 
                "language": "ja", 
                "lastBuildDate": "Thu, 14 Mar 2013 05:00:00 +0900", 
                "ldWeather:lwws": {
                    "id": "400010"
                }, 
                "ldWeather:provider": [
                    {
                        "link": "http://www.halex.co.jp/halexbrain/weather/", 
                        "name": "(株)ハレックス"
                    }, 
                    {
                        "link": "http://tenki.jp/", 
                        "name": "日本気象協会"
                    }
                ], 
                "link": "http://weather.livedoor.com/area/forecast/400010?r=rss", 
                "pubDate": "Thu, 14 Mar 2013 05:00:00 +0900", 
                "title": "福岡県 - 福岡の天気 - livedoor 天気情報"
            }
        ], 
        "link": "http://pipes.yahoo.com/pipes/pipe.info?_id=DJEg41Ac3BG8IAI2E5PZnA", 
        "pubDate": "Thu, 14 Mar 2013 01:31:23 +0000", 
        "title": "XML 2 JSON"
    }
}


まとめ

ちなみに、このAPIですがタグの属性値はどのように取得できるんでしょうかね... 。時間があったら誰か試してみてください。

0 件のコメント:

コメントを投稿