X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=sidebyside;f=0.6.x%2Fjs%2F05_util%2F02_XJSON.js;h=5f86da6c529a325b714a669c421c84238ebe187c;hb=6b28a86cc49680dac50278ff5617bfe7a3d98613;hp=698927a8a54d1eb5d114b2d897b481bb3c2510d4;hpb=094b0536bafe5efd70540698cf74ab13ece03ebb;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 698927a..5f86da6 100644 --- a/0.6.x/js/05_util/02_XJSON.js +++ b/0.6.x/js/05_util/02_XJSON.js @@ -1,17 +1,56 @@ -var X_JSON = X[ 'JSON' ] = window.JSON || { +/** + * ã¦ã¼ãã£ãªãã£é¢æ°ã¨ã¦ã¼ãã£ãªãã£ã¯ã©ã¹ + * @namespace X.JSON + */ +var X_JSON = X[ 'JSON' ] = + +// TODO ie8 ã¯åãã¬ã¼ã ã«ã¯ JSON ãããªãâ¦ã¢ã¯ã»ã¹å¯è½ãªè¦ªãæ¢ç´¢ + + // JavaScriptã§unicodeæååãunescapeãã + // http://perutago.seesaa.net/article/202801583.html + + // http://blog.livedoor.jp/dankogai/archives/51503830.html + // Ajax - IE8ã«ãJSONå ¥ã£ã¦ã¾ãã使ããã¨ã¯éããªããã© + // Compatibility mode (å¥åQuirks mode) ã§ã¯ãJSONãªãã¸ã§ã¯ãã¯ç¡å¹ã«ãªãã¾ããiframeãã ãã§ã +X_UA[ 'IE8' ] ? { + 'stringify' : function( o ){ + return unescape( JSON.stringify( o ) ); + }, + + 'parse' : JSON.parse +} : + +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 ){ if( json ) json += ','; v = obj[ k ]; v = v || v === 0 ? v : null; - json += '"' + k + '":' + ( X_Type_isObject( v ) ? X_NET_GIMR_toJSONString( v ) : X_Type_isString( v ) ? '"' + v + '"' : v ); + json += '"' + k + '":' + ( X_Type_isObject( v ) ? X_JSON_stringify( v ) : X_Type_isString( v ) ? '"' + v + '"' : v ); }; //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 + ')' ); +}; +