IE 6,7下のJSON.stringify(),JSON.parse()使用-20 chapter(拡張読書)


IE 6,7はJSONオブジェクトをサポートしておらず、JSONは使用できない.stringify(),JSON.parse(),
したがって、
  • は、jsonデータをシーケンス化することができる、古いブラウザに対してjsonデータをシーケンス化する方法を書くことができる.
  • は、jsonデータをjsオブジェクトに解析する方法を書くこともできます.もちろん、evalを直接使用してjsonデータを解析することもできます(セキュリティ上の危険性が考慮されている場合)
  • またはあなたのプロジェクトでjQueryを使用し、直接jQueryを使用します.parseJSON(json))はいずれもjsonデータを解析できるタスクであり,
  • または導入(現在は無効)
    <!--[if lt IE 9]>
    
        <script src="http://www.json.org/json2.js"></script>
    
    <![endif]-->
    
    


  • だからここを見てみるともっと役に立つかもしれません
     
    /*
    
    	 * method : stringify(obj);
    
    	 * return : json string
    
    	 * source : https://gist.github.com/754454
    
    */
    
    
    
    	    var stringify = function (obj) {
    
    	    	//   IE8+    (ff,chrome,safari   JSON  ),  JSON.stringify()    
    
    	        if (window.JSON) {
    
    	            return JSON.stringify(obj);
    
    	        }
    
    	        var t = typeof (obj);
    
    	        if (t != "object" || obj === null) {
    
    	            // simple data type
    
    	            if (t == "string") obj = '"' + obj + '"';
    
    	            return String(obj);
    
    	        } else {
    
    	            // recurse array or object
    
    	            var n, v, json = [], arr = (obj && obj.constructor == Array);
    
    
    
    	            // fix.
    
    	            var self = arguments.callee;
    
    
    
    	            for (n in obj) {
    
    	                v = obj[n];
    
    	                t = typeof(v);
    
    	                if (obj.hasOwnProperty(n)) {
    
    	                    if (t == "string") v = '"' + v + '"'; else if (t == "object" && v !== null)
    
    	                        // v = jQuery.stringify(v);
    
    	                        v = self(v);
    
    	                    json.push((arr ? "" : '"' + n + '":') + String(v));
    
    	                }
    
    	            }
    
    	            return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    
    	        }
    
    	    };
    
    /*
    
     	* method : parse(json string)
    
     	* return : js   
    
    */	  
    
    	var parse = function (jsonString) {
    
            if (window.JSON) {
    
                return window.JSON.parse(s);
    
            }
    
            //    jquery parseJSON(s)  
    
            return $.parseJSON(jsonString);
    
        }; 
    
    
    
    //  :
    
     	var gather = {
    
    		id : 1314,
    
    		name : 'pom',
    
    		infor : {
    
    			age : 20,
    
    			sex : 'man',
    
    			marry : false,
    
    			identity : 622421,
    
    			habit : ['  ','  ','   ','  ',true]
    
    		},
    
    		family : ['  ','  ','  '],
    
    		likeGames : ['PCgame','Netgame'],
    
    	};
    
    	//   json     
    
    	var originalJsonText = JSON.stringify(gather,null,4);
    
    	var customJJsonText = stringify(gather);
    
    
    
    	console.log(originalJsonText);
    
    	console.log(customJJsonText);
    
    
    
    	//json     js   (Object,Array,String...)   
    
    	var evalObj = eval('(' + customJJsonText + ')');
    
    	var originalObj = JSON.parse(customJJsonText);
    
    	var jqueryObj = $.parseJSON(customJJsonText);
    
    
    
    	console.log(evalObj);
    
    	console.log(originalObj);
    
    	console.log(jqueryObj);
    
    

    上記のコードソース:
    https://gist.github.com/754454

    mark:『高程三』20章拡張読書ノート