[お知らせ] JSON 変換サービス
BOINC や BOINC ベースのプロジェクトで配信されている各種 XML データを JSON 形式に変換するサービスを始めました。 (3/14 追記)
JSON (JavaScript Object Notation)というのはデータ交換用のフォーマットの一種です。 仕様が単純で Javascript などのスクリプト言語でも簡単に取り扱えるのが特徴です。 最近流行の Ajax でも簡単に取り扱うことが出来るので注目されています。
今回提供するサービスは, BOINC や BOINC ベースのプロジェクトで配信されている各種 XML データを JSON 形式のデータに変換して再配布するものです。 現時点で対応しているデータは以下の5つです。
- BOINC クライアント のバージョン情報
- BOINC Project News の RSS フィード
- SETI@home Project News の RSS フィード
- Einstein@Home Project News の RSS フィード
- Boinc Combined Statistics の User Stats
変換を行う CGI スクリプトは xml2json.cgi をベースにしています。 JSON データを取得するには以下の URI で GET 要求します。
http://huaa.baldanders.info/xml/?type=value
value
の値によって要求するデータを切り替えられます。
とり得る値は以下のとおりです。
client : | BOINC クライアント のバージョン情報 |
devclient : | BOINC クライアント のバージョン情報(開発バージョンを含む) |
boinc : | BOINC Project News の RSS フィード |
seti : | SETI@home Project News の RSS フィード |
einstein : | Einstein@Home Project News の RSS フィード |
boincstat : | Boinc Combined Statistics の User Stats |
type=boincstat
の場合は cpid (Cross-project ID)もあわせてセットします。
http://huaa.baldanders.info/xml/?type=boincstat&cpid=Cross-projectID
Cross-project ID は各プロジェクトのアカウントページに書かれています。
結果は text/plain データ(UTF-8 エンコード)として返されます。 実際に試してみると分かりますが, 以下のような Javascript コードになっています。
if (typeof(value) == 'undefined') value = {}; value.data = { ... }; if (typeof(value.onload) == 'function') value.onload(value.data);
value
の部分(オブジェクト名)はパラメータの type
値になります。
例えばパラメータを type=client
と指定すると,
オブジェクト名は client
になり,
変換情報は client.data
に格納されます。
もしオブジェクト名を変えたい場合は URI のパラメータに var
を追加します。
http://huaa.baldanders.info/xml/?type=value&var=name
例えばパラメータを type=client&var=json
と指定すると,
オブジェクト名は json
になります。
var
の名前には英字およびアンダーバー(_)しか使えないのでご注意ください。
例えば type=client&var=client2
などとしても無視されます(オブジェクト名は client
になります)。
返ってきたデータは Javascript のソースとしてインクルードします。
<script type="text/javascript" src="http://huaa.baldanders.info/xml/?type=client"></script>
なお,
テストページに Javascript の記述例があるので参考にしてください。
テストページには CGI の非同期読み込みとコールバック関数(object.onload
)の定義例があります。
JSON については別の blog で記事を書いています。 JSON に興味があるかたは参考にしていただけるとうれしいです。
本サービスでは各プロジェクトのサイトへの過剰なアクセスを避けるため, 取得データのキャッシュを行っています。 一度アクセスすると少なくとも6時間はキャッシュされますのでご注意ください。 本サービスへの過剰なアクセスもご遠慮ください(情報はキャッシュされますので意味がありません)。 本サービスで出力される情報については一切保証はありません。 また本サービス自体を予告なく停止することがありますのであらかじめご了承ください。 あくまでも各自で責任の取れる範囲内でのご利用を心がけていただけるようお願いいたします。