JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。
在旧版IE(特别是IE7及更早版本)中,JSON结构不起作用的主要原因包括:
JSON
对象最可靠的解决方案是引入一个JSON兼容库,如json2.js
:
// 引入json2.js库后
var data = JSON.parse('{"name":"John", "age":30}');
console.log(data.name); // 输出: John
if (!window.JSON) {
window.JSON = {
parse: function(sJSON) { return eval("(" + sJSON + ")"); },
stringify: function(vContent) {
if (vContent instanceof Object) {
var sOutput = "";
if (vContent.constructor === Array) {
for (var nId = 0; nId < vContent.length; sOutput += this.stringify(vContent[nId]) + ",", nId++);
return "[" + sOutput.substr(0, sOutput.length - 1) + "]";
}
if (vContent.toString !== Object.prototype.toString) {
return "\"" + vContent.toString().replace(/"/g, "\\$&") + "\"";
}
for (var sProp in vContent) {
sOutput += "\"" + sProp + "\":" + this.stringify(vContent[sProp]) + ",";
}
return "{" + sOutput.substr(0, sOutput.length - 1) + "}";
}
return typeof vContent === "string" ? "\"" + vContent.replace(/"/g, "\\$&") + "\"" : String(vContent);
}
};
}
如果项目已经使用jQuery,可以利用其$.parseJSON()
方法:
var data = $.parseJSON('{"name":"John", "age":30}');
console.log(data.age); // 输出: 30
var jsonString = '{"name":"John", "age":30}';
var data = eval('(' + jsonString + ')');
console.log(data.name); // 输出: John
这些解决方案适用于:
通过上述方法,可以确保JSON结构在包括IE在内的所有浏览器中正常工作。
没有搜到相关的文章