记录,js中将字符串转化成json对象的常见三种方法

js中将字符串转化成json对象的常见三种方法:

var data='[{"name":"xiao","age":12},{"name":"xiao","age":12}]';
//方式一
var json1 = JSON.parse(data);
dy(":"+json1[0].name);
//方式二
var json2 = eval("(" + data+ ")");
dy(json2[0].name);
//方式三
var json3 = (new Function("return " + data))();
dy(json3[0].name);


var str = '{"name":"小明","age":18}';

将字符串转化json对象:
1. var json = JSON.parse(str);//要求数据格式严,并且要用单引号('')来套双引号("")
2. var json = eval("(" + str + ")");//注意,固定写法,可转换大部分数据
3. var json = (new Function("return"+ str))();//注意,固定写法(里面的 return不可缺),可转换大部分数据。

eval()的返回值遵循以下规则:
1.如果eval()的参数不是字符串,那么eval()将直接返回参数。
2.如果eval()的参数是字符串,那么eval()将这个字符串解析成代码后进行执行,并返回最后一行代码执行的结果。
3.如果字符串无法解析成合法的代码,eval()将抛出SyntaxError错误。

如下的data字符串就不可以用JSON.parse()来转换,只能用下列两种
var data ="[{'name':'xiao','age':12},{'name':'xiao','age':12}]";
//方式一
var obj = eval("("+data+")");alert(obj.length);//2
//方式二
var jsonObj = (new Function("return"+ data))();alert(jsonObj.length);//2

var str1 = "{'name':'李杰','age':'30'}";//只能用eval()或者new Function()的方式来转化

java中定义字符串一般都习惯用双引号("")套单引号('')来
String str = "{'name':'李杰','age':'30'}";
response.getWriter().println(str);//发送到前台页面中


js中ajax程序用eval()函数来转换
//alert(xmlHttp.responseText);//接收服务器端String str = "{'name':'李杰','age':'30'}";
var obj = eval("("+xmlHttp.responseText+")");
alert(obj.name);
alert(obj.age);

没啥事儿,找了点儿资料,就小小记录下。看到的伙伴,不足之处,不用太计较。

你可能感兴趣的:(JS案例)