以下のような感じのものをJSONデータで行っているサイトに遭遇したので、やってみようと思います。
そこでとりあえずJSONデータの取り扱いについてやっていこうと思います。
本記事の内容
- JSONってなんだ
- JavaScriptで読み込んでみる
JSONってなんだ
JSONを取り扱うにあたってそもそもJSONについてあまり深く考えたことがなかったので調べてみました。
- Jsonとは
- Json形式
1.Jsonとは
JSONは「JavaScript Object Notation」の略であり、テキストベースのデータフォーマットです。
似たようなものでは「XML」が挙げられます。同じ内容を「XML」と「JSON」で記述するなら「JSON」の方が楽に書けます。
また、略からも下のJSON形式からもわかるようにJavaScriptのオブジェクト表記です。
2.JSON形式
JSONは以下のような形式で記述されます。
{
"name" : "ディープインパクト" ,
"speed" : 100 ,
"stamina" : 90
}
「key」「value」をセットで扱うタイプですね。
「,」区切りで「”(ダブルクォーテーション)」で囲みます。数字はそのまま記入することが可能です。
また、スラッシュやダブルクォーテーションなどはエスケープシーケンスを使用します。
オンラインでバリデーションチェックできるツールもあるみたいです。
JavaScriptで読み込んでみる
jQueryのgetJSON()を使って取得します。
$.getJSON( url , (date) => {
//処理
});
他にはXMLHttpRequestを使って取得する方法です。
こちらは少し複雑になりそうなので近々別記事でまとめます。
まずは、HTML部です。
<section class="con">
<div>
<p>ボタンを押して取得します。<br>(getJSON())</p>
<input type="button" class="btn" value="取得" onclick="getJson()">
</div>
<div id="resGetJson">
</div>
</section>
<section class="con">
<div>
<p>ボタンを押して取得します。<br>(XMLHttpRequest())</p>
<input type="button" class="btn" value="取得" onclick="xhrJson();">
</div>
<div id="resXhrJson">
</div>
</section>
二通りの方法縦に並べて表示します。
ボタン押してJSONから取得のイベントが発火します。
id設定してあるdivの子要素で表示します。
次に肝心のJavaScript部です。
まずはgetJSONの方です。
function getJson() {
let url = "json/hourse.json";
$.getJSON(url , function(data) {
$("#resGetJson").append("<p>NAME:" + data.name + " <br>SPEED:" + data.speed +"<br>STAMINA:" + data.stamina + "</p>");
});
}
urlにJSONファイルの場所をしています。
getJSONでurlからJSONファイルをdataに格納し、出力したい個所にpタグ付けて出力しています。
こちらの方は短くてわかりやすいかもしれません。
次にXMLHttpRequestを使って取得する方です。
function xhrJson() {
let url = "json/hourse.json";
//XMLHttpRequestオブジェクト生成
let request = new XMLHttpRequest();
//リクエストの初期化
request.open("GET" , url);
//リクエストプロパティのレスポンス型の定義
request.responseType = "json";
//リクエストの送信
request.send();
request.onload = function(){
let result = request.response;
let elem = document.createElement("p");
let parElem = document.getElementById("resXhrJson");
elem.innerHTML = "NAME:" + result.name + " <br>SPEED:" + result.speed +"<br>STAMINA:" + result.stamina ;
parElem.appendChild(elem);
};
}
このような形になります。
基本的には同じような構造です。url先のJSONデータをGETで取得します。
取得が完了したら、HTMLに出力という形です。
今回はJSON形式で取得しましたが、textで受け取りJavaScriptオブジェクトにパースして利用することやJSONデータを文字列に変えることもできます。
この辺りはまとめたらURL貼り付けます。
まとめ
jqueryのgetJSONを使った方が取り扱いが簡単そうな気がしますね。
一方XMLHttpRequestはプロパティやメソッドに種類があるため、多様な切り分けができそうです。
こちらで続きをやっています。モーダルでインフォメーションを表示しています。