OSDN Git Service

Version 0.6.169, add doc comment.
[pettanr/clientJs.git] / 0.6.x / js / 05_util / 02_XJSON.js
1 /**\r
2  * ユーティリティ関数とユーティリティクラス\r
3  * @namespace X.JSON\r
4  */\r
5 var X_JSON = X[ 'JSON' ] =\r
6 \r
7 // TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索\r
8 \r
9                                                 // JavaScriptでunicode文字列をunescapeする\r
10                                                 // http://perutago.seesaa.net/article/202801583.html\r
11                                                 \r
12                                                 // http://blog.livedoor.jp/dankogai/archives/51503830.html              \r
13                                                 // Ajax - IE8にもJSON入ってます。使えるとは限らないけど\r
14                                                 // Compatibility mode (別名Quirks mode) では、JSONオブジェクトは無効になります。iframeもだめです\r
15 X_UA[ 'IE8' ] ? {\r
16         'stringify' : function( o ){\r
17                 return unescape( JSON.stringify( o ) );\r
18         },\r
19         \r
20         'parse' : JSON.parse\r
21 } :\r
22 \r
23 window.JSON ||\r
24 {\r
25         'stringify' : X_JSON_stringify,\r
26         \r
27         'parse'     : X_JSON_parseTrustableString\r
28 };\r
29 \r
30 \r
31 /**\r
32  * \r
33  * @alias X.JSON.stringify\r
34  */\r
35 function X_JSON_stringify( obj ){\r
36         var json = '', k, v;\r
37         for( k in obj ){\r
38                 if( json ) json += ',';\r
39                 v = obj[ k ];\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
42         };\r
43         //console.log( json );\r
44         return '{' + json + '}';\r
45 };\r
46 \r
47 /**\r
48  * <p>JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。\r
49  * <p>url パラメータや window.name に対して使用する際は最新の注意を払います。\r
50  * @alias X.JSON.parse\r
51  */\r
52 function X_JSON_parseTrustableString( jsonString ){\r
53         return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
54 };\r
55 \r