2 * ユーティリティ関数とユーティリティクラス
\r
5 var X_JSON = X[ 'JSON' ] =
\r
7 // TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索
\r
9 // JavaScriptでunicode文字列をunescapeする
\r
10 // http://perutago.seesaa.net/article/202801583.html
\r
12 // http://blog.livedoor.jp/dankogai/archives/51503830.html
\r
13 // Ajax - IE8にもJSON入ってます。使えるとは限らないけど
\r
14 // Compatibility mode (別名Quirks mode) では、JSONオブジェクトは無効になります。iframeもだめです
\r
16 'stringify' : function( o ){
\r
17 return unescape( JSON.stringify( o ) );
\r
20 'parse' : JSON.parse
\r
25 'stringify' : X_JSON_stringify,
\r
27 'parse' : X_JSON_parseTrustableString
\r
33 * @alias X.JSON.stringify
\r
35 function X_JSON_stringify( obj ){
\r
36 var json = '', k, v;
\r
38 if( json ) json += ',';
\r
40 v = v || v === 0 ? v : null;
\r
41 json += '"' + k + '":' + ( X_Type_isObject( v ) ? X_JSON_stringify( v ) : X_Type_isString( v ) ? '"' + v + '"' : v );
\r
43 //console.log( json );
\r
44 return '{' + json + '}';
\r
48 * <p>JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。
\r
49 * <p>url パラメータや window.name に対して使用する際は最新の注意を払います。
\r
50 * @alias X.JSON.parse
\r
52 function X_JSON_parseTrustableString( jsonString ){
\r
53 return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );
\r