JSON: JavaScript オブジェクト記法
JSON 構文ルール
名前と値のペアのデータ
データはカンマで区切られます
中括弧はオブジェクトを保存します
角括弧は配列を保存します
JSON には 6 種類の値があります:
オブジェクト、配列、文字列、数値、ブール値、null
JSON オブジェクトは、名前と値のペアの順序付けされていないコレクションです
名前: 任意の文字列
値: 配列やオブジェクトを含む任意のタイプの JSON 値 (オブジェクトはオブジェクトに埋め込むことができます)
注: JSON 文字列では二重引用符を使用する必要があります (一重引用符はエラーを報告します)
1. オブジェクト
JavaScript でリテラルを作成します:
var object = { name:"lily", age:22 };
または:
var object = { "name":"lily", "age":22 };
JSON:
{ "name":"lily", "age":22 }
2. 配列
JSON 配列は JavaScript で配列リテラル形式を使用します
拡張子:
配列とオブジェクトを組み合わせると、より複雑なデータの組み合わせを形成できます
例:
[ { "name":"lily", "age":22, "job":"docter" }, { "name":"nicy", "age":21, "job":"teacher" }, { "name":"lily", "age":22, "job":"AE" } ]
3. 解析とシリアル化
JSON は JavaScript に似た構文を持ち、JSON データ構造を解析して有用な JavaScript オブジェクトにすることができます
1.JSON オブジェクト
JSON データの送受信
JSON データ オブジェクトの読み取り、書き込み、送信、受信を行う場合は、文字列に変換する必要がありますが、文字列から JSON データ オブジェクトに変換できます。 (JavaScript で使用されるのと同じ方法で読み書きします)
JSON オブジェクトには 2 つのメソッドがあります:
① stringify(): JavaScript オブジェクトを JSON 文字列にシリアル化します
② parse(): JSON 文字列をネイティブ JavaScript 値に解析します
例:
var book = { title:"professional JavaScript", authors:[ "lily" ], edition:3, year:2011 }; var jsonText = JSON.stringify(book); alert(jsonText); //{"title":"professional JavaScript","authors":["lily"],"edition":3,"year":2011} alert(typeof jsonText); //string var bookCopy = JSON.parse(jsonText); alert(typeof bookCopy); //object
この例では、JSON.stringify() を使用して JavaScript オブジェクト ブックを JSON 文字列にシリアル化し、それを jsonText に保存します。JSON 文字列 jsonText を JSON.parse() に直接渡して、対応する JavaScript 値を取得します。
注: JavaScript オブジェクトをシリアル化する場合、最終値は有効な JSON データ型のインスタンス プロパティであり、無効な値はスキップされます
2. シリアル化オプション
JSON.stringify() は、JavaScript オブジェクトをシリアル化するときに 2 つのパラメーターを受け取ることができます
パラメーター 1: フィルター。配列または関数
を指定できます。
パラメータ 2: JSON 文字列
でインデントを保持するかどうかを示すオプション
1) 結果のフィルタリング
フィルターパラメーターが配列の場合、JSON.stringify() の結果には、配列
にリストされている属性のみが含まれます。
例:
var book = { "title":"professional JavaScript", "authors":[ "lily" ], edition:3, year:2011 }; var jsonText = JSON.stringify(book,["title","edition"]); alert(jsonText); //{"title":"professional JavaScript","edition":3} alert(typeof jsonText); // string
2) 文字列のインデント:
JSON.stringify() メソッドの 3 番目のパラメーターは、結果
のインデントと空白文字を制御するために使用されます。
3) toJSON() メソッド
オブジェクトが独自の JSON データ形式を返すように toJSON() メソッドを定義します
4. JSON アクセス値
最初のタイプ: 単純な配列
['アイテム1','アイテム2','アイテム3']
値: 数値インデックスを介して埋め込み値にアクセスします (最初の項目のインデックスは 0)
['アイテム1','アイテム2','アイテム3']
var items = ['item1','item2','item3'];
alert(items[0]); // item1
2 番目のタイプ: {} を使用してオブジェクトと配列を表現します
{ "キー":"値" }
値: キー名
var oExample = { "名前":"ユリ" };
alert(oExample.name); // ユリ
alert(oExample["name"]); // ユリ
これら 2 つの方法を使用すると、多くのデータ構造をサブレコード (名前付きまたは数値インデックス キーを使用) で記述することができます。
var oNovelist = { "firstName":"lily", "lastName":"russ", "novels": [ { "title":"and choas died", "year":"1970" }, { "title":"the famale man", "year":"1976" } ] }; var msg = oNovelist.firstName+" "+oNovelist.lastName+"'s"+" "+oNovelist.novels[0].title+" "+"was published in"+oNovelist.novels[0].year; alert(msg); // lily russ's and choas died was published in1970