JSONとJSONP
ネタ元:JSONについての勉強メモ:外部URLから呼び出せない。どうやったら・・・
JSONやJSONPを利用したJavaScriptでのデータをの取り扱い方です。
JSONの場合
JSONはJSONについての勉強メモで書かれているようにデータをオブジェクトとして記述しておく方法です。
var jsonData ={"users": [
{
name: "hamu",
age : 24,
language:["XHTML" , "CSS"]
},
{
name: "h2",
age:25,
language:["PHP" , "Java"]
},
{
name: "hoge",
age:26,
language:["JS" , "jQuery"]
}
]}
とJSONを定義しておけば、
for(var index in jsonData.users){
document.write("名前は"+jsonData.users[index].name+"です。");
document.write("歳は"+jsonData.users[index].age+"です。");
document.write("言語は"+jsonData.users[index].language+"です。");
document.write("<hr />");
}
と言った具合に簡単(?)にデータが取り出せます。
JSONの便利なところは外部ファイルとしても扱えること。
jsonData.jsonなどのファイルを用意しておけば、そのJSONデータをAjaxで取得し利用することが可能です。
(先ほどのJSONのサンプルから『var jsonData =』を省いたものです)
var jsonText = $.ajax({url: "jsonData.json",async: false});
eval("var jsonData="+jsonText.responseText)
Ajax部分は手続きがめんどくさいのでjQueryを利用します。今回のサンプルでは同期通信で取得しています。
取得したjsonData.jsonのデータ(この時点ではテキストデータ)を一度evalでjavascriptの式として再評価します。
これで外部ファイルの情報を簡単に扱えるようになります。
jQueryを利用している場合はgetJsonというメソッドを利用すれば簡単に扱えます。
$(function(){
$.getJSON("jsonData.json", function(jsonData){
$(jsonData.users).each(function(){
$("body").append("名前は"+this.name+"です。");
$("body").append("歳は"+this.age+"です。");
$("body").append("言語は"+this.language+"です。");
$("body").append("<hr />");
})
})
})
外部ファイルのjsonデータに『var jsonData =』さえ追加しておけば、script要素で読み込んだ際に、すでにjsonDataというオブジェクトが存在しjavacript内で利用することが可能です。
<script type="text/javascript" src="http://javascript.webcreativepark.net/sample/jsonData.json"></script>
<script type="text/javascript">
for(var index in jsonData.users){
document.write("名前は"+jsonData.users[index].name+"です。");
document.write("歳は"+jsonData.users[index].age+"です。");
document.write("言語は"+jsonData.users[index].language+"です。");
document.write("<hr />");
}
</script>
複雑な手続きが不必要なので非常に簡単。それにクロスドメインで利用することも可能。
JSONP
JSONPは少し書式が変わり、
jsonColback({"users": [
{
name: "hamu",
age : 24,
language:["XHTML" , "CSS"]
},
{
name: "h2",
age:25,
language:["PHP" , "Java"]
},
{
name: "hoge",
age:26,
language:["JS" , "jQuery"]
}
]})
のようになります。
jsonColbackがコールバック関数になります。
<script type="text/javascript">
var jsonColback = function(jsonData){
for(var index in jsonData.users){
document.write("名前は"+jsonData.users[index].name+"です。");
document.write("歳は"+jsonData.users[index].age+"です。");
document.write("言語は"+jsonData.users[index].language+"です。");
document.write("<hr />");
}
}
</script>
<script type="text/javascript" src="jsonData.jsonp"></script>
最初にコールバック関数を設定しておき、JSONPファイルを読み込むことによりコールバック関数を実行して外部データの情報を操作します。
こちらもクロスドメインで動作します。
jQueryを利用すればスクリプト内でJSONPを取得することも可能です。
$.getJSONでurlを指定する際に末尾に?callback=?を追加します。
$(function(){
$.getJSON("http://javascript.webcreativepark.net/sample/jsonData.jsonp?callback=?")
})
var jsonColback = function(jsonData){
$(jsonData.users).each(function(){
$("body").append("名前は"+this.name+"です。");
$("body").append("歳は"+this.age+"です。");
$("body").append("言語は"+this.language+"です。");
$("body").append("<hr />");
})
}
関連エントリー
jQueryを使ったサンプルコード
jQuery版のLightBox「ThickBox」
IE6以下をWeb標準に準拠させるライブラリ『IE7.js』
ブロックレベル要素の高さを揃えるheightLine.js
アルファ画像を扱うalphafilter.jsライブラリ
スポンサードリンク
«Googleキーワード ツールが月間検索数を表示 | メイン | [Re:Creator's Party Kansai]第5回 toggleクリックの制御 - jQueryによるJavaScript入門»