網易微專業-JS14JSON

1、JavaScript Object Notation:JS對象標記

什么是 JSON ?
JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)
JSON 是輕量級的文本數據交換格式
JSON 獨立于語言 *
JSON 具有自我描述性,更易理解

  • JSON 使用 JavaScript 語法來描述數據對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。
json最后一個不帶逗號,否則可能報錯

2.JSON.parse() 將JSON轉化為JS

Paste_Image.png

兼容:

Paste_Image.png

3.JSON.stringify(value)


Q:JSON.stringify函數在ie6/7中不支持,如何兼容?
A:

1.jQuery插件支持的轉換方式:
   $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字符串轉換成json對象

2.Javascript支持的轉換方式:
   eval('(' + jsonstr + ')'); //可以將json字符串轉換成json對象,注意需要在json字符外包裹一對小括號,不推薦使用

3.JSON官方的轉換方式:
??http://www.json.org/提供了一個json.js,這樣ie8(兼容模式),ie7和ie6就可以支持JSON對象以及其stringify()和parse()方法; 
可以在https://github.com/douglascrockford/JSON-js上獲取到這個js,一般現在用json2.js。
   <!--[if lt IE 9]>
        <script src="json2.js"></script>
    <![endif]-->
這樣JSON.stringify 便可以正常使用!


4,if (!window.JSON) {
    window.JSON = {
        stringify: function(obj) {
            var result = "";
            for (var key in obj) {
                if (typeof obj[key] == "string") {
                    // 如果屬性值是String類型,屬性值需要加上雙引號
                    result += "\"" + key + "\":\"" + obj[key] + "\",";
                } else if (obj[key] instanceof RegExp) {
                    // 如果屬性是正則表達式,屬性值只保留一對空大括號{}
                    result += "\"" + key + "\":{},";
                } else if (typeof obj[key] == "undefined" || obj[key] instanceof Function) {
                    // 如果屬性值是undefined, 該屬性被忽略。忽略方法。
                } else if (obj[key] instanceof Array) {
                    // 如果屬性值是數組
                    result += "\"" + key + "\":[";
                    var arr = obj[key];
                    for (var item in arr) {
                        if (typeof arr[item] == "string") {
                            // 如果數組項是String類型,需要加上雙引號
                            result += "\"" + arr[item] + "\",";
                        } else if (arr[item] instanceof RegExp) {
                            // 如果屬數組項是正則表達式,只保留一對空大括號{}
                            result += "{},";
                        } else if (typeof arr[item] == "undefined" || arr[item] instanceof Function) {
                            // 如果數組項是undefined, 則顯示null。如果是函數,則顯示null?。
                            result += null + ",";
                        } else if (arr[item] instanceof Object) {
                            //如果數組項是對象(非正則,非函數,非null),調用本函數處理
                            result += this.stringify(arr[item]) + ",";
                        } else {
                            result += arr[item] + ",";
                        }
                    }
                    result = result.slice(0, -1) + "],"
                } else if (obj[key] instanceof Object) {
                    // 如果屬性值是對象(非null,非函數,非正則),調用本函數處理
                    result += "\"" + key + "\":" + this.stringify(obj[key]) + ",";
                } else {
                    result += "\"" + key + "\":" + obj[key] + ",";
                }
            }
            // 去除最后一個逗號,兩邊加{}
            return "{" + result.slice(0, -1) + "}";
        }
    };
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容