JOSN对象与JSON字符串的相互转化
前端在与服务端通信时.会与JSON JSON字符串经常打交道.
什么是JSON? 如果不太清楚可以点击这里
服务端传过来的数据一般都是一串字符串,jQuery AJAX中的success函数的第一个形参是一个JSON对象,其实在里面也是由字符串转化来的
一,JSON对象转为为JSON字符串
JavaScript里面有内置的JSON.stringfiy函数,但是只兼容IE8及以上,对于需要兼容IE7的网站还是要手写的
代码如下,没有对特殊的字符串进行处理,如果有需要可以自己添加一个过滤函数
var stringfiy = function (obj) {
function str(key, holder) {
var value = holder[key], v = "", partical = [];
var type = toString.call(value).replace(/^\[object\s(\w+)\]$/i, function(str, $1){
return $1.toLowerCase();
});
switch (type) {
case "number":
return String(value);
case "string":
return quote(value);
case "boolean":
return String(value);
case "null" :
return "null";
case "array":
var len = value.length;
for (var i = 0; i < len; i++ ) {
partical.push(str(i, value));
}
return "[" + partical.join(",") + "]";
case "object" :
for (var p in value) {
partical.push("\"" + p +"\":"+str(p, value));
}
return "{" + partical.join(",") + "}";
}
}
return str("", {"": obj}) ;
};
二, JSON字符串转化JSON对象
JavaScript里面也有JSON.parse方法,兼容性与JSON.stringify是相同的,而且他不能解析非标准的JSON对象
1 一,使用eval 2 function evalJson(text) { 3 var obj = null; 4 try { 5 if (/^\s*\{/.test(text)) { 6 text = "(" + text + ")"; 7 } 8 obj = eval(text); 9 } catch (e) { 10 11 } 12 return obj; 13 }