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) + "}";
}
};