frostar@wiki

メニュー

作ったもの

過去の遺物
TRPG
プログラム
リンク

自分関係

ここのページへのリンクについてはこちら
TRPGのセッション記録とかメインのブログ
生配信チャンネル。プログラム<雑談
気が向いたときにやります
個人的な質問に答えてます。

TRPG系

お世話になっているオンラインセッションサイト
TRPGのことならここ!
IRCサーバなど、お世話になってます。
ネクロニカの支援サイトです。ツール開発やオンセもやっています。

プログラム系

初心者のためのプログラムのページ。WindowsSDKの方についても詳しく書いています。
windowsSDKのテクニックがいろいろ書いてあります。
C++STL(標準テンプレートライブラリ)の日本語版リファレンスです。


更新履歴

取得中です。


JSONPででたとこのデータ取得


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

先日、でたとこサーガの支援ツールを公開しました。
これは公式のキャラクター登録書からデータを取得しています。
公式のキャラクター登録書ではJSON形式のデータが公開されており、
キャラクターのURLに.jsonを付加することで、JSONのデータを参照することが可能です。
このJSONデータの中身を支援ツールの項目に反映させています。

このように、Web上に公開されているデータを取得して扱うことはよくあるケースです。
データを取得するためにはXMLHttpRequestを使うことが多いですが、
XMLHttpRequestにはクロスドメイン制約というものがあるので、
自分と異なるドメインに存在するデータを取得する事ができません。
jQueryとjquery.xdomainajax.jsというプラグインを使うことで可能になるのですが、これはちとめんどい。
そこで、JSONPという技術があります。
JSONPに対応したページであれば、簡単にJSONのデータを取得することが可能になります。
JSONPはscriptタグのsrcとして、URLの最後にコールバック関数を指定すると、
そのURLのデータを取得し、コールバック関数が呼ばれます。
コールバック関数の引数にはJSONのデータが渡されてくるので、これを処理すればいいわけです。

例えば、でたとこサーガの公式登録書では
http://detatoko-saga.com/character/[Number].json
というURLで[Number]の番号のキャラクターのJSONファイルを参照することができるので、
<script src="http://detatoko-saga.com/character/1.json&callback=onload">
というタグを書けばキャラクター番号1番のデータを取得して、onloadという関数が呼び出されます。
onloadという関数を定義してその中でjsonデータを処理してやれば、公式登録書のデータを扱えます。
function onload(json) {
	//jsonデータの処理
}

JSONPで得られるデータは{}で囲まれている部分はMap、[]で囲まれている部分は配列として戻ってきます。
公式登録書のデータ形式の仕様について詳しくは省略しますが、
例えば、キャラクターの名前はjson["name"]、
2つ目のスキルのスキルランクはjson[1]["rank"]で取得することができます。
あとは、これらを自分のツールのデータに適用するだけ!
もちろん、動的scriptタグを生成しても同様に読み込めるので、
目的のデータがJSONPにさえ対応していればこのように簡単に処理が可能です。