js中对json对象和字符串的理解以及相互转化





<script>


  var str="{'strv':["+
              "{'a':'a11'},"+
			 " {'a':'b222'}"+
         " ]}";
 //如果放在一行更清楚:var str="{'strv':[{'a':'a11'}, {'a':'b222'} ]}";
  var str2=eval('('+str+')');
//  alert(str2.strv[1].a);


  var jsonob={'jsonv':[
                 {'j':'j111'},
				 {'j':'j222'}
			 ]};
//如果放在一行更清楚:var jsonob={'jsonv':[ {'j':'j111'}, {'j':'j222'} ]};
//  alert(jsonob.jsonv[1].j);
  /*
var    str="{'strv':[{'a':'a11'}, {'a':'b222'} ]}";
var jsonob={'jsonv':[ {'j':'j111'}, {'j':'j222'} ]};
这样我们可以看出json对象和字符串是不一样的!
字符串就是字符串,json对象是一个对象。
虽然其内容都是我们看到的json格式,但是两者是有区别的。
我们想取出其中某个属性的值,其实是对json对象操作的(
你能取出对象的属性值,但不能取出字符串的属性值,字符串
没属性。)。
所以如果你拿到的是对象,那你就直接可以取值了,
例如jsonob.jsonv[1].j。
如果你拿到的是字符串,那你必须先转化成对象才可以取值,
字符串转对象有几种方法,js本身自带的是var str2=eval('('+str+')');
这里的str2就是对象了。如果你引入了json.js文件,还可以使用其中的
方法,这些都已经封装好了。


总结:json只是一种格式。符合这种格式的可以是json对象,也可以是字符串。
要取属性值只能从对象里取。所以需要两者的转化。


js自带的转化方法:
  字符串转成json对象:
     var str="{'strv':[{'a':'a11'}, {'a':'b222'} ]}";//字符串
     var jsonObject=eval('('+str+')');//json对象
  json对象转成字符串:
     js本身没有这样的方法,你需要自己写这样的方法,才能转化。


从上可知,js本身只可以将字符串转成json对象,
但不可以将json对象转成字符串。其实我们可以用
json.js里的方法,而且更简单。这时你要引入json.js文件。


json.js里的方法:
  字符串转成json对象:
         var  str="{'strv':[{'a':'a11'}, {'a':'b222'} ]}";//字符串
   转成json对象方法1: var myJSONObject1=str.parseJSON();  
   转成json对象方法2: var myJSONObject2=JSON.parse(str);

  json对象转成字符串:
         var jsonob={'jsonv':[ {'j':'j111'}, {'j':'j222'} ]};//json对象
   转成字符串方法1:var mystr1=jsonob.toJSONString();    
   转成字符串方法2: var mystr2=JSON.stringify(jsonob);

  */

</script>


 

通过实验,我们应该明白,json其实是一种格式,js本身支持这种格式,

所以你不需要引入json.js就可以使用json对象。我们一般会引入json.js因为

这里面封装了json对象和字符串转化的方法,方便我们使用(当然还有其他方法)。

通过本例我们更好地理解json对象和字符串之间的区别。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值