JSONとは
JavaScript Object Notationの略で、JavaScript記法でデータを記述できる。
JSONのシンプルさから多くの言語がライブラリを用意してるため、プログラミング言語間でデータを受け渡せる。
- メディアタイプ:「application/json」
- 拡張子:「.json」
用意されたデータ型:
- オブジェクト
- 配列
- 文字列
- 数値
- ブーリアン
- null
以外のデータ型:
-
日時:
UNIX時間の場合、もしタイムゾーンを扱う必要なら、JavaScriptのDateクラスのtoString()関数で出力した文字列が利用できるけど、より標準的なフォーマットはISO 8601フォーマットで"2023-05-2212:31:43+09:00"
になる。 -
リンク:単純にURIを文字列値として持つのが最も簡単で、絶対URIが無難です。
例:{ "href" :"http://example.jp/foo/bar" }
JSONPによるクロスドメイン通信
JSONPはJSON with paddingで、JSОNPは、プラウザのこの性質を利用してクロスドメイン通信を実現する手法です。
JSONPか必要の背景ーークロスドメイン通信の制限
Ajax で用いる XMLHttpRequest というJavaScriptのモジュールは、セキュリティ上の制限から JavaScriptフアイルを取得したのと同じサーバとしか通信できません。
不特定多数のドメインに属するサーバにアクセスすることを「クロスドメイン通信」(ドメインをまたがった通信の意)と呼びます。しかし、複数のドメインのサーバと通信できず、単一のドメインのみと通信をしなければならないのは大きな制限です。
<script>
要素による解決
XMLHttpRequestではクロスドメイン通信ができませんが、HTMLの<script>
要素を用いると、複数のサイトから JavaScriptフアイルを読み込めるのです。
コールバック関数を活用するJSONP
JSONP ではオリジナルのJSONをクライアントが指定したコールバック関数名でラップして、ドメインの異なるサーバからデータを取得します。
ハイパーメディアフォーマットとしてのJSON
JSONをハイパーメディアフォーマットとして使うためには、リンクを表現するメンバをきちんと入れる必要があります。ほかのリソースとの関係を考慮して、リンクをしっかりと入れた設計をすることが重要です。