javascript字符串转json对象

方法1:eval函数

计算某个字符串,并执行其中的的 JavaScript 代码.只接受原始字符串作为参数如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

//(1):eval参数若不是字符串,直接返回参数本身
var o1=new Object();
eval(o1);		
var o2={a:1,b:0} ;
eval(o2);		

//(2)参数为字符串,运行代码
/* example.1 */
var o3="{a:2}";		
var o4=eval(o3)	//等效于 var o4=2;  (标记1)

/* example.2 */
o3="{name:'Tom',age:22}";	//json类型
var o5=o3;
//eval(o3);		//错误,eval在执行字符串时,将{}当成语句块,语句块中的代码有误(在于逗号)
o3="{name:'Tom';age:22}";
eval(o3)		//对比:语句块中代码可以运行,在行内直接写name:'Tom'是没有问题的,如字符,数字类似,所以无异常
alert(eval(o3));//输出22,同上面(标记1)很相似,总是返回最后一个常量表达式,如age:22本身为一个常量表达式,其值为22,虽然写法上很怪异

//(3)解析json
var o=eval("("+o5+")");//使用()将"{}语句块"包含后,eval将它当做一个对象返回,而不再是{}语句块,注:var x=(3),正确
alert(o.name+"-"+o.age);

方法2:Function类

(1)常用

var foo01 = function() 
{ 
	var temp = 100; 
	this.temp = 200; 		//属于window对象
	return temp + this.temp; 
} 
alert(typeof(foo01)); 
alert(foo01()); 		//不包含constructor

(2)了解function

var foo02 = new function() 
{ 
var temp = 100; 
this.temp = 200; 
return temp + this.temp; 
} 
alert(typeof(foo02)); 
alert(foo02.constructor()); 

(3) 获取json

var s="{name:'Tom',age:20}";
var o=new Function("return "+s);
alert(o);//匿名函数
alert(o().name)	//得到json值
* new Function(param),创建匿名函数,将参数作为函数体
方法3:native

支持IE8与FF3.1beta

var s =  'var temp = 100; this.temp = 200; return temp + this.temp;' 
if(typeof JSON!="undefined")
{
	JSON.parse(s);
}
else
{
	alert('JSON no support');
}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值