X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F05_util%2F02_XJSON.js;h=5f86da6c529a325b714a669c421c84238ebe187c;hb=43b7875a2aadc07439db67724e60644f129bcc90;hp=2046288def49f153c5d1e7aad5245f0568e17920;hpb=2612dc17dae6ba790807049d2587e8a2910007cc;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/05_util/02_XJSON.js b/0.6.x/js/05_util/02_XJSON.js index 2046288..5f86da6 100644 --- a/0.6.x/js/05_util/02_XJSON.js +++ b/0.6.x/js/05_util/02_XJSON.js @@ -1,5 +1,7 @@ - - +/** + * ユーティリティ関数とユーティリティクラス + * @namespace X.JSON + */ var X_JSON = X[ 'JSON' ] = // TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索 @@ -18,14 +20,18 @@ X_UA[ 'IE8' ] ? { 'parse' : JSON.parse } : -window.JSON || { +window.JSON || +{ 'stringify' : X_JSON_stringify, - 'parse' : X_String_parseTrustedJsonString + 'parse' : X_JSON_parseTrustableString }; - +/** + * + * @alias X.JSON.stringify + */ function X_JSON_stringify( obj ){ var json = '', k, v; for( k in obj ){ @@ -36,4 +42,15 @@ function X_JSON_stringify( obj ){ }; //console.log( json ); return '{' + json + '}'; -}; \ No newline at end of file +}; + +/** + *

JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。 + *

url パラメータや window.name に対して使用する際は最新の注意を払います。 + * @alias X.JSON.parse + */ +function X_JSON_parseTrustableString( jsonString ){ + if( !jsonString ) return jsonString; // '' の場合エラ-になる + return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' ); +}; +