<script type="text/javascript"> /** * 转换为json格式 */ String.prototype.toJSON = function(){ try{ return eval("("+this+")"); }catch(e){ return {}; } } /** * 判断json对象是否为{}空的情况 */ function isEmptyObject(obj){ for ( var bb in obj ) { return false; } return true; } /** * 简单测试 */ function test(){ var isJsonEmpty = "{}"; var isJsonObj = "{'name':'测试1',age:24}"; var isJsonArr = "[{'name':'测试2',age:24},{'name':'测试3',age:25},{'name':'测试4',age:26}]"; var json1 = isJsonEmpty.toJSON(); var json2 = isJsonObj.toJSON(); var json3 = isJsonArr.toJSON(); alert(isEmptyObject(json1));//ture alert(json2.name);//测试1 alert(json3.length);//3 } </script>
补充如下:
var a =eval("[1,2,3]"); alert(a);//输出1 2 3 function(){}(); /*创建匿名函数,并执行。但会报语法错误(由于大括号在JS的多义性造成),{}表示语句块无任何意义,var obj ={}表示对象字面量表示法 比如:{abc:123,name:"CJ"}可以按照label语法解析,也可以安对象字面量方法解析,按照label语法解析是不符合语法格式的所以报错了, 解决办法加入({abc:123,name:"CJ"}); ,加入括号告之浏览器按照表达式方式解析。所以上面函数可以这样写(function(){})(); */ //二种方式转换字符串为JSON对象 var json = "{name:'CJ',age:18}"; //var data = eval("("+json+")");//加入括号的原因如上所述。 data = (new Function("","return "+json))();