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转换为字符串;