##1.JSON 概要
JavaScript Object Notation、JS オブジェクト表記法、(XML と同様に)データ形式の一種であり、JS と同じ構文形式を持ちます
P.S.ちょっとした歴史:JSON の父はダグラス、『JavaScript 言語精粹』の著者で、JSON 創造のインスピレーションは JS 中のリテラル表記法から来ました
##2.JSON 構文
###1.単純値の表現
例えば 3, "str", null, false など。undefined はサポートされず、文字列は必ず二重引用符を使用する必要があります(JSON には文字列を表す一重引用符の用法はありません。これは JS と異なります)
###2.オブジェクトの表現
JS オブジェクトリテラルと似ていますが、
-
変数宣言なし
-
末尾のセミコロンなし
-
プロパティ名は必ず二重引用符で囲む必要があります(一重引用符で書いてしまったり、引用符を忘れたりしやすい)
例えば:
{
"name" : "ayqy",
"sex" : "M",
"nextSibling" : {
"name" : "xxx",
"sex" : "M",
"nextSibling" : null
}
}
###3.配列の表現
配列リテラルと似ていますが、
-
変数宣言なし
-
末尾のセミコロンなし
例えば:
[3, 6, false, "ayqy", {"name" : "xxx", "age" : 18}]
###4.複雑なデータ構造
配列とオブジェクトはネストを通じてより複雑なデータ構造を作成できます。例えば:
[
1,
{
"extra" : [
6,
{
"id" : 5,
"attr" : "value"
},
false
],
"index" : 1001
},
2
]
##3.シリアライゼーション(JS オブジェクトから JSON へ)
[IE8+] および他の主要ブラウザには組み込み JSON オブジェクトがあり、ネイティブメソッドを呼び出して JS オブジェクトをシリアライズできます:
JSON.stringify(obj);//デフォルトルールに従ってシリアライズ。値が undefined および値が関数のプロパティは無視されます
JSON.stringify(obj, arr/fun(key, value));//一部のプロパティをフィルタリングできます(arr にリストされたプロパティのみ保持、または fun でフィルタリング)
JSON.stringify(obj, null, num/strPrefix);//フォーマットをサポート。自動改行し、各レベルを num 個のスペースでインデント、または各レベルにプレフィックス文字列を追加
[IE7-] をどのようにサポートするかについては、後で議論します
##4.パース(JSON から JS オブジェクトへ)
JSON.parse(str);//直接パース
JSON.parse(str, fun(key, value));//fun に従ってパース
[IE7-] をどのようにサポートするかについては、後で議論します
##5.クロスブラウザ JSON シリアライゼーション/パース
JSON オブジェクトをサポートしないブラウザには shim(小さな 用語)を使用できます:
ダウンロード先:https://github.com/douglascrockford/JSON-js/(ダグラス自身が作成)
簡単に言えば小型 JS ライブラリ(圧縮後 4KB のみ)で、JSON パースとシリアライゼーション機能を提供します。もちろん、JQuery を直接使用することもできます
ダグラスは追加の JSON サポートも提供しています(基本的な stringify と parse 以外):
json2.js: 組み込み JSON オブジェクトが存在しない場合、グローバルオブジェクトに JSON プロパティを追加します。プロパティ値はオブジェクトで、stringify と parse メソッドを持ちます。parse は eval メソッドでパースし、いくつかの正規表現検出を使用して、非 JSON コードの実行を防止します。現代ブラウザではこの js ファイルは何もしません。ネイティブサポートが優先されます。[IE8-] をサポートするのでなければ、これを使用しないでください。つまり、このファイルは必須ではありません。
json.js: このファイルは json2.js のすべての機能を含み、Object のプロトタイプに toJSONString メソッドと parseJSON メソッドを追加します。使用しないことをお勧めします。
json_parse.js: このファイルは parse 関数の別の実装を提供します:再帰降下(P.S. 構文解析器。。まあ、ダグラス爺さんの戦闘力はやや強い)で eval 関数を置き換えます
json_parse_state.js: このファイルは parse 関数の別の実装を提供します:ステートマシン(P.S.。。。)で eval 関数を置き換えます
cycle.js: このファイルには 2 つの関数があります:JSON.decycle と JSON.retrocycle。JSON 中の環とグラフ構造を消除/回復するために使用され、JSONPath はデータ関係を表すために使用されます
P.S.上記は readme ファイルの簡単な翻訳です
###参考資料:
-
PHP が JSON データをパースする方法:先輩のブログ記事
-
JSON 公式情報:http://www.JSON.org/
コメントはまだありません