JSONチュートリアル–はじめに、構造、構文規則、およびデータ交換
このチュートリアルでは、 JSONデータ交換形式。この投稿では、JSONオブジェクトの構造、JSON構文規則、JSONとのデータ交換、およびJSONのプログラミング言語サポートについて説明します。
JSONとは何ですか?
- JSON 軽量で人間が読める形式のデータ交換形式です。
- JSONはを保存するために使用されます collection 名前と値のペアまたは 注文リスト 値の。
- JSONはシリアル化に役立ちます objects、 と arrays ネットワーク経由で送信するため。
- JSONは解析と生成が非常に簡単で、XMLのような完全なマークアップ構造を使用しません。
- JSONは、高速な非同期クライアント/サーバー通信のためのXML形式の一般的な代替手段になりました。
- すべてのJSONファイルの拡張子は
.json
.
JSONオブジェクトの構造:
JSONは次のようになります。
- 名前と値のペアのコレクション:
The 名前 二重引用符で囲まれた文字列である必要があります。そしてその 価値 別のことができます string、 アレイ、 番号, boolean また ヌル。値自体は別のJSONにすることができます object.
- 注文したコレクション:
JSONを使用して、オブジェクト/値の順序付けられたコレクションを格納できます。このコレクションは、プログラミング言語のプリミティブのアレイとオブジェクトのアレイに似ています。
JSONの例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "firstName": "John", "lastName": "Snow", "age": 25, "children": [], "spouse": null, "address": { "street": "7504 Taylor Drive", "city": "New York City", "state": "New York", "postalCode": "11238" }, "phoneNumbers": [ { "type": "mobile", "number": "212 555-3346" }, { "type": "fax", "number": "646 555-4567" } ] } |
上記の例では、
- 最初の2つの名前と値のペアは、文字列を別の文字列にマップします。
- 3番目の名前と値のペアは文字列をマップします
age
番号25で。 - 4番目の名前と値のペアは文字列をマップします
children
空のアレイで[]
. - 5番目の名前と値のペアは文字列をマップします
spouse
とともにnull
価値。 - 6番目の名前と値のペアは文字列をマップします
address
別のJSONオブジェクトを使用します。 - 7番目の名前と値のペアは文字列をマップします
phoneNumbers
JSONオブジェクトのアレイを使用します。
JSON構文規則:
- JSON object に囲まれています 中括弧
{}
. - 名前と値のペアは、 結腸
(:)
で区切られています コンマ(,)
. - アン アレイ で始まる 左角かっこ で終わります 右角かっこ
[]
. - 数字の末尾のコンマと先行ゼロは禁止されています。
- 8進数および16進数の形式は許可されていません。
- Each 鍵 JSON内は一意であり、二重引用符で囲む必要があります。
- The boolean タイプは2つの特別な値にのみ一致します。
true
とfalse
およびNULL値は、null
リテラル(引用符なし)。
JavaScript JSON組み込みライブラリ:
JavaScript JSON組み込みライブラリは、JSONオブジェクトをデコードおよびエンコードするための2つの関数を提供します– JSON.parse()
と JSON.stringify()
.
1. JSON.stringify()
JavaScriptオブジェクトに対応するJSON文字列を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html> <head> <title>Encoding a JavaScript object into a JSON string.</title> </head> <body> <div id="json"></div> <script> var obj = { "fruit": "Apple", "types": ["Small", "Medium", "Large"], "quantity": 1000 }; var json_string = JSON.stringify(obj); document.getElementById("json").innerHTML = json_string; </script> </body> </html> |
出力:
{“fruit”:”Apple”,
“types”:[“Small”,”Medium”,”Large”],
“quantity”:1000}
2. JSON.parse()
JSON文字列をJavaScriptオブジェクトとしてデコードする安全で高速な方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html> <body> <h2>Decoding a JSON string into a JavaScript object.</h2> <div id="json"></div> <script> var json_str = '{"fruit":"Apple","types":["Small","Medium","Large"],"quantity":1000}'; try { var obj = JSON.parse(json_string); document.getElementById("json").innerHTML = obj.fruit + ", [" + obj.types + "], " + obj.quantity; } catch (e) { alert("Cannot parse given string"); } </script> </body> </html> |
出力:
Apple,
[Small,Medium,Large],
1000
また、JSON文字列をJavaScriptオブジェクトに解析して、 eval()
括弧で囲まれたJSON文字列の関数。 JSONはJavaScriptから派生しているため、これは機能します。 eval()
は邪悪な機能であり、絶対に避けなければなりません。それの訳は eval
発信者の権限でユーザーのマシン上で悪意のあるスクリプトを実行する可能性があります。さらに、悪意のあるコードは、 eval()
が呼び出され、Webサイトが攻撃に対して脆弱になりました。 JSON.parse()
は、悪意のあるコードで安全に失敗するevalの安全で高速な代替手段です。 JSONは、ほとんどすべての最新のブラウザーに含まれています。古いバージョンのブラウザの場合は、次のような外部JavaScriptライブラリを使用してください ダグラス・クロックフォードのjson2.js.
JSONを使用したデータ交換:
JSONは主に、ブラウザとサーバー間でシリアル化されたテキストを送信するために使用されます。
- データの送信:
クライアント側では、JavaScriptオブジェクトは最初にを使用してJSON文字列に変換されます
JSON.stringify()
方法。そして、結果の文字列は、リクエストの本文またはパラメータでサーバーに送信されます。 - データ受信中:
サーバーは、応答として別のJSON文字列を返す場合があります。サーバーから受信したJSONは、を使用してJavaScriptオブジェクトに変換できます
JSON.parse()
方法。
JSONの公式メディアタイプは application/json
.
プログラミング言語のサポート:
元々、JSONはJavaScript言語のサブセットであることが意図されていましたが、言語に依存しないデータ形式のため、現在、ほとんどすべての主要なプログラミング言語がJSONをサポートしています。 JSONの公式ウェブサイト JSONの解析と生成に使用できるさまざまなプログラミング言語で利用可能な主要なJSONライブラリを一覧表示します。たとえば、Javaで最も人気のあるJSONライブラリは、GSON、JSON.simple、Jackson、およびJSONPです。
JSONデータ交換フォーマットについては以上です。
便利なリンク: