Wikipedia で調べたり、Google で検索したり、公式ドキュメントを読んだりしましたが、JSON が何であるか、なぜそれを使用するのかをまだ完全に理解できていません。
私はしばらくの間、PHP、MySQL、JavaScript / HTML を使用してアプリケーションを構築してきましたが、JSON によって作業が楽になったり、コードやユーザー インターフェイスが改善されたりするのであれば、ぜひ知りたいと思います。簡潔な説明は何でしょうか。
ベストアンサー1
JSON (JavaScript Object Notation) は、データ交換に使用される軽量フォーマットです。JavaScript言語のサブセット (JavaScript でオブジェクトを構築する方法) に基づいています。MDNに記載されているただし、一部の JavaScript は JSON ではなく、一部の JSON は JavaScript ではありません。
これが使用される例としては、Webサービスの応答があります。昔は、WebサービスはXMLを主なデータ形式として使用してデータを送信していましたが、JSONが登場して以来(JSON形式はRFC 4627によるダグラス・クロックフォード)は、はるかに軽量であるため、好まれるフォーマットとなっています。
詳細は公式ウェブサイトをご覧くださいJSON ウェブサイト。
JSON は次の 2 つの構造に基づいて構築されます。
- 名前と値のペアのコレクション。さまざまな言語で、これはオブジェクト、レコード、構造体、辞書、ハッシュ テーブル、キー付きリスト、または連想配列として実現されます。
- 順序付けられた値のリスト。ほとんどの言語では、これは配列、ベクトル、リスト、またはシーケンスとして実現されます。
JSON構造
JSON データの例を次に示します。
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JavaScript での JSON
JSON (JavaScript の場合) は文字列です。
多くの人は、すべての JavaScript オブジェクトが JSON であり、JSON は JavaScript オブジェクトであると想定します。これは誤りです。
JavaScript では、var x = {x:y}
はJSON ではなく、これはJavaScript オブジェクトです。この 2 つは同じものではありません。JSON に相当するもの (JavaScript 言語で表現) は ですvar x = '{"x":"y"}'
。は、それ自体がオブジェクトではなく、文字列x
型のオブジェクトです。これを本格的な JavaScript オブジェクトに変換するには、まずこれを解析する必要があります。はオブジェクトになりましたが、これはもはや JSON ではありません。var x = JSON.parse('{"x":"y"}');
x
JSONとJavaScriptを扱う場合、コールバックで返された結果を関数で評価したくなるかもしれませんeval
が、JSONでは有効だがJavaScriptでは有効でない2つの文字(U+2028とU+2029)があるため、これは推奨されません(詳細については、ここ)。
したがって、評価する前にJSONが有効かどうかをチェックするCrockfordのスクリプトを常に使用する必要があります。スクリプトの説明へのリンクはここそしてここには直接リンクJavaScriptファイルに。最近の主要ブラウザはすべて独自の実装このために。
JSON パーサーの使用方法の例 (上記のコード スニペットの JSON を使用):
// The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
// Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the JSON example)
alert(johnny.firstName + ' ' + johnny.lastName); // Will alert 'John Smith'
};
JSON パーサーには、もう 1 つの非常に便利なメソッドも用意されています。このメソッドは、JavaScript オブジェクトをパラメーターとして受け入れ、JSON 形式の文字列を出力します。これは、データをサーバーに送り返すstringify
場合に便利です。
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
// The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
上記の2つのメソッド(parse
およびstringify
)は、2番目のパラメータも受け取ります。これは、最終結果のすべてのレベルのすべてのキーと値に対して呼び出される関数であり、各値は入力した関数の結果に置き換えられます。(これについての詳細はここ)
ちなみに、JSONはJavaScriptだけのものだと思っている人は、この郵便受けそれはそうではないことを説明し、確認します。