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

文章标签: json
  • :
  • 05-17 14:35
  • :
  • 2146次
  • :
  • 0条
  • 13赞

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

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


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

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

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

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

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

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

<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:

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

PS:https://github.com/douglascrockford/JSON-js上获取到这个js,现在一般都用json2.js



您正在找的文章可能是: