2009-05-07 19 views

答えて

2

quothがクロックフォード(http://www.json.org/js.html):あなたはevalの()関数を使用することができます

は、オブジェクトにJSONテキストを変換します。 eval()はJavaScript コンパイラを呼び出します。 JSONは適切な JavaScriptのサブセットであるため、コンパイラ は正しくテキストを解析し、 はオブジェクト構造を生成します。文字 は、 JavaScriptシンタックスのあいまいさを回避するために、括弧で囲む必要があります。

var myObject = eval( '(' + 'myJSONtext + ') ');

評価関数は非常に高速です。 しかし、それは JavaScriptプログラムをコンパイルして実行することができるので、 にセキュリティ問題がある可能性があります。ソースが信頼されている場合 と有能であると示されたevalの使用は です。 JSONパーサーを使用する方がはるかに安全です。 ...

これを防御するには、JSONパーサー を使用する必要があります。 JSONパーサーは、 はJSONテキストのみを認識し、 すべてのスクリプトを拒否します。 のネイティブJSONサポートを提供するブラウザでは、JSONパーサーは でもevalよりもはるかに高速です。ネイティブJSONサポート は、次のECMAScript 標準に含める予定です。 です。

var myObject = JSON.parse(myJSONtext、 reviver);

その後、彼は記事の残りの部分でJSONプロトタイプを開発しています。

Firefox 3および3.5で使用されているGeckoのバージョンでは、JSONがネイティブ(https://developer.mozilla.org/En/JSON)に対応しています。これは、プロジェクトが最近のGeckoベースのアプリケーションに限定されている場合に便利です。


としては、以下に指摘、テキストジェネレータ(不パーサ)についての興味深い部分はhttps://github.com/douglascrockford/JSON-js/blob/master/json2.jsであり、

A JSONのstringifierは、JSONに、JavaScriptのデータ構造を変換する、反対方向に進むと導入しますテキスト。 JSONは周期的なデータ構造をサポートしていないので、JSON文字列に循環構造を与えないように注意してください。

var myJSONText = JSON.stringify(myObject、replacer);

有効にシリアル化されていない周期的なデータ構造とオブジェクトは明らかに唯一の大きな注意点です。

0

ページ JSONテキストにJavaScriptのデータ構造を文字列化する方法に関する情報が含まれているため、匿名のリンク(http://www.json.org/js.html)は正しい方向にあなたを指しますことを言及する価値がある:

A JSON stringifier JavaScriptデータ構造をJSONテキストに変換する逆方向に進みます。

特に、オープンソースのJSONパーサーとJSONストリンジェントを指しているページの下部にあるリンクを探します。

12

(@Anonymousによって提起される)クロックフォードのライブラリにある2つのサンプルの方法があります。

JSON文字列オブジェクトに:

var obj = JSON.parse('{ "property":"value" }'); 
alert (obj.property); 

// value 

オブジェクトJSON文字列に:

var str = JSON.stringify({ "property":"value" }) 
alert (str); 

//{ "property":"value" } 

があります。主要なフレームワークの大部分でこれを行うメソッドも組み込まれています。

+0

ライブラリーhttp://www.json.org/json.js – Keith

+2

@Jason T Featheringham Waow「Mr.Json」は、自分自身で質問を編集しています:) –

関連する問題