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