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 }        

 

 

  
  


         

  

 

posted @ 2017-01-09 13:17  雷霆崖带头哥  阅读(518)  评论(0编辑  收藏  举报