jquery里把字符串转为json对象的四种方法,及每种方法的优缺点

jquery里把字符串转为json对象的四种方法,及每种方法的优缺点

  • 摘自:http://www.aijquery.cn/Html/jqueryrumen/88.html

简介jquery里把字符串转换为json对象的四种方法及实例演示,并且详细分析每种方法的优点和缺点。l

在jquery里,我们如果要把字符串转换为json对象,通常有四种方法,下面站长来和大家分享一下这四种方法,并分析每一种方法的优点和缺点。


第一种:用jquery里自带的$.parseJSON函数:

1
2
3
4
5
<script language= "javascript" >
var  jsonstr1= "{\"id\":\"1\",\"name\":\"aijquery\"}" ;
var  obj=$.parseJSON(jsonstr1);
alert(obj.id);
</script>

上面的代码是站长亲测过的,用$.parseJSON来把字符串转换为json对象时,对字符串的“要求”非常高,需要字符串里的属性全都用双引号来包裹,并且不能用单引号,下面这两种写法,在用$.parseJSON来转换时,都会报错:

1
2
{id:1,name: 'aijquery' //没有包围双引号
{ 'id' :1, 'name' : 'aijquery' //使用了单引号而不是双引号

另外,如果你什么都不传入,或者一个空字符串、null或undefined,$.parseJSON都会返回 null

第二种:js里的方法,用eval来把字符串转换为json

1
2
3
4
5
6
7
8
<script language= "javascript" >
var  jsonstr1= "{\"id\":\"1\",\"name\":\"aijquery\"}" ;
var  jsonstr1= "{'id':1,'name':'aijquery'}" ;
var  jsonstr1= "{id:1,name:'aijquery'}" ;
//上面这三种写法,不管是用单引号包裹,还是不包裹,都能用eval来转换为json对象
var  obj=eval( '(' +jsonstr1+ ')' );
alert(obj.id);
</script>

在用eval来把字符串转为json时,需要在字符串外包裹一对小括号;

但用eval来转换时,有些“不安全”,因为eval会执行json串中的表达式,所以如果是普通的字符型的json字符串,可以用eval来转换,而如果是复杂的,含有对象的就不能用eval来转换了。


第三种:使用浏览器自带的JSON.parse:

1
2
3
4
5
6
<script language= "javascript" >
var  jsonstr1= "{\"id\":1,\"name\":\"aijquery\"}" ;
var  obj=JSON.parse(jsonstr1);
console.log(obj);
alert(obj.id);
</script>

Firefox,chrome,opera,等浏览器都支持JSON.parse,但IE6、IE7不支持,并且对要转换的字符串要求也比较高。


第四种:JSON官方提供的方法:

www.json.org  提供了一个json.js,可以用parse()方法来把字符串转换为json,用stringify()来把json转换为字符串;

猜你喜欢

转载自blog.csdn.net/qq_36267160/article/details/80567885