eval 与JSON

eval可以将字符串生成语句执行,和SQL的exec()类似。 
eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了。举个例子: 
我们要做一个function(),功能是输入网页中两个个对象的名称,然后程序就将这两个对象的值联接起来输出。 
function output(a,b) 

var tmpa,tmpb; 
tmpa=document.all.a.value; 
tmpb=document.all.b.value; 
document.write(tmpa+tmpb); 

output('input1','input2'); 
这样你执行的时候就会提示错误“document.all.a不是对象”以及“document.all.b不是对象”。原来 javascript把a和b当成对象名称了,怎样能让javascript把a里面的值作为对象名称呢?这时候就要用eval了,把代码改成这样: 
function output(a,b) 

var tmpa,tmpb; 
tmpa=eval("document.all."+a+".value"); 
tmpb=eval("document.all."+b+".value"); 
document.write(tmpa+tmpb); 

output('input1','input2'); 
这样javascript就会先取出a,b的值,然后和前面的document.all.以及后面的.value组合运行,于是就可以 
顺利取出input1和input2的值,我们的目的达到了。 


JSON简介

JSON是一种用JavaScript对象符号格式化文本的简单方法。与其它更为流行的面向对象设计技术不同的是,人们经常称它为面向数据工具。由于它使用编程结构,因此易于为人与机器进行阅读。

JSON旨在传送基于文本的数据,所以它不支持任何类型的二进制对象。基本上,它支持两种类型的数据结构:名称/值对集合(如对象)和有序数值列表(如数组)。下面的列表详细说明了JSON支持的数据元素:

  • Objects(对象):以大括号( {})开始并结束的对象。
  • Object members(对象成员):由以冒号(:)分隔的字符串和值组成的元素。成员之间用逗号(,)隔开。
  • Arrays(数组):数据用大括号定义。也就是说,它们以大括号({})开始并结束。数组由值构成,这些值位于大括号之中,不同值之间以逗号隔开。
  • Values(值):单独的值可能为字符串、数字、对象、或一个文字值,如真、假和零。字符串值位于双引号中,可能包含Unicode字符和反斜扛或转义字符。字符是一个单独的字符串。

简单是JSON的一个主要优势——它比与之对应的XML要简单得多。用一个显示JSON数据语法和格式化的例子就能清楚证明这一点。下面的代码片断使用JSON来建立一个网址数组:

{

"websites":[

"http://www.techrepublic.com/",

"http://www.cnet.com/",

http://www.news.com/

] }

要用XML方便地定义同样的数据,可能相当困难。

处理JSON数据

要应用JSON,你需要像处理XML一样对JSON格式的数据进行解析。

由于其设计简单,所以用JavaScript内置的eval()过程可以很方便地对JSON进行解析,如下面的代码片断所示:

testObject = eval('(' + json_data + ')');

 
用javascript玩json的一个例子
<html>
 <head>
 <meta name="vs_defaultClientScript" content="JavaScript"> 
 <script>
 function jsontest()
 {
  //json
  var jsontext = '{"man":{"weight":"75kg","age":"24"},"ar":["1","2","3","4"]}';
  //解析json
  var aman = eval("("+jsontext+")");
  //取出json中的信息
  alert(aman.man.weight);
 }
 </script>
 </head>
 <body οnlοad="jsontest();">
 </body>
</html>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值