您的位置:首页 > Web前端 > JavaScript

IE6,7下的JSON.stringify(),JSON.parse()使用-20 chapter(扩展阅读)

2012-04-02 12:00 543 查看
IE6,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]-->


所以看看这里可能会对你的帮助更大
https://github.com/douglascrockford/JSON-js

/*
* 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
;
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章 扩展阅读 笔记
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: