OSDN Git Service

Version 0.6.169, add doc comment.
[pettanr/clientJs.git] / 0.6.x / js / 05_util / 02_XJSON.js
index e69de29..a99aa0e 100644 (file)
@@ -0,0 +1,55 @@
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.JSON\r
+ */\r
+var X_JSON = X[ 'JSON' ] =\r
+\r
+// TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索\r
+\r
+                                               // JavaScriptでunicode文字列をunescapeする\r
+                                               // http://perutago.seesaa.net/article/202801583.html\r
+                                               \r
+                                               // http://blog.livedoor.jp/dankogai/archives/51503830.html              \r
+                                               // Ajax - IE8にもJSON入ってます。使えるとは限らないけど\r
+                                               // Compatibility mode (別名Quirks mode) では、JSONオブジェクトは無効になります。iframeもだめです\r
+X_UA[ 'IE8' ] ? {\r
+       'stringify' : function( o ){\r
+               return unescape( JSON.stringify( o ) );\r
+       },\r
+       \r
+       'parse' : JSON.parse\r
+} :\r
+\r
+window.JSON ||\r
+{\r
+       'stringify' : X_JSON_stringify,\r
+       \r
+       'parse'     : X_JSON_parseTrustableString\r
+};\r
+\r
+\r
+/**\r
+ * \r
+ * @alias X.JSON.stringify\r
+ */\r
+function X_JSON_stringify( obj ){\r
+       var json = '', k, v;\r
+       for( k in obj ){\r
+               if( json ) json += ',';\r
+               v = obj[ k ];\r
+               v = v || v === 0 ? v : null;\r
+               json += '"' + k + '":' + ( X_Type_isObject( v ) ? X_JSON_stringify( v ) : X_Type_isString( v ) ? '"' + v + '"' : v );\r
+       };\r
+       //console.log( json );\r
+       return '{' + json + '}';\r
+};\r
+\r
+/**\r
+ * <p>JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。\r
+ * <p>url パラメータや window.name に対して使用する際は最新の注意を払います。\r
+ * @alias X.JSON.parse\r
+ */\r
+function X_JSON_parseTrustableString( jsonString ){\r
+       return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
+};\r
+\r