【JavaScript】JSONデータの取り扱い
以下のような感じのものを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はプロパティやメソッドに種類があるため、多様な切り分けができそうです。
こちらで続きをやっています。モーダルでインフォメーションを表示しています。