json数据定义和引用

来源:互联网 发布:电暖器 知乎 编辑:程序博客网 时间:2024/06/05 14:25

下述代码在Chrome49、firefox45、IE11、IE8中测试。


1、定义

查了w3school.com.cn,json的定义有两种方法:

eval解析:

var jsn1='({"aa":"22",bb:"00"})';var jsna= eval(jsn1);    alert(jsna.bb);alert(jsna["bb"]);
注意jsn1是字符串,且首尾要有(),否则报错。name可以不用双引号引起来。


json解析:

var jsn2='{"aa":"22","bb":"00"}';var jsnb= JSON.parse(jsn2);alert(jsnb.bb);alert(jsnb["bb"]);
注意name必须用双引号引起来,否则不能解析。

2、调用

从上可知,“.”和“[]”都可调用

3、重载

var jsn2='{"aa":"22","aa":"00"}';
上述代码aa将变为00,也就是可以被重新赋值。不管是eval方式(需要eval时加括号)还是json解析方式。

4、其他东西

看下面的代码:

    var jsn1={aa:"11","aa":"22"}    alert(jsn1.aa);    var jsn2={"aa":"22",aa:"11"}    alert(jsn2.aa);    

上述代码都能弹出22。但代码与之前不同:jsn1和jsn2不再是字符串,而是直接用大括号定义。也就是说,jsn1和jsn2是对象。


var jsn0={aa:11,bb:function(d){d?alert(d):alert(1);return true},cc:jsna.bb};jsn0.bb(2);alert(jsn0.cc);
上述代码,将弹出2和00。

如果alert(bb),则会弹出函数代码。而如果alert(bb()),则会首先执行bb()(弹出1),然后再弹出bb函数返回值true。


用对象定义,肯定能实现json但功能,但json的优势是:快速!。因此,能用json的时候,还是考虑优先用json。


0 0
原创粉丝点击