JSONP とは一体何か教えてと言う友達がいるので、まず JSON から説明したいと思います。(その友達は、JSON と JSONP の区別がついていませんでした。。。)
JSON は、偉大なる Crockford先生が RFC 4627で定めた JavaScript 用のデータ形式です。Web サーバとブラウザの間でデータを交換する際に、そのデータ形式として使われることが多いです。
ちなみに JSON とは、JavaScript Object Notation の略称です。
JavaScript をよく知らない人のために
Java はよく知っているけど、JavaScript は知らないという人にとって、オブジェクトがリテラルで書ける、つまり new なんかせずともプログラム中に記述できると言うとビックリするかもしれません。何を隠そう、JavaScript のオブジェクトとは連想配列(ハッシュ)なのです。連想配列なら、リテラルで書けそうでしょう?
JSON とは、大雑把に言えば JavaScript のオブジェクト・リテラルそのものです。以下に JSON の例を挙げておきます。
{ "name": "Yamamoto", "age": 37 }
JavaScript を知っている人のために
JSON では、JavaScript のオブジェクト・リテラルにいくつか制約が加わっています。
- キーの部分はダブルクオートで囲まれた文字列です。
- 値として関数は書けません。
- 値に出てくる文字列もダブルクオートで囲みます。
- シングルクオートで囲んではいけません。
- JSON だけではなく、オブジェクト・リテラルでもそうですが、最後の要素にカンマを付けてはいけません。
悪い例
{ name: "Yamamoto", // キーはダブルクオートで囲まないといけない "getName": function() { return this.name; }, // 関数を書いてはならない "age": 37, // 最後にカンマを書いてはいけない }