首页 / 软件开发 / JAVA / 转化服务器端传回的JSON数据
转化服务器端传回的JSON数据2011-01-05 javaeye hyj1254讲讲JS的内置函数eval()的用法.最初用到它是为了将后台传送过来的JSON格式的字符串转化为JSON对象。后来发现它的功能的确很强大,远不止这点,但今天只讲它。如果想深入了解可以参考下W3School。进入正题:Java代码<script>
var json="{"id":1}";
alert(json.id);
</script>如果仔细看,可以发现,上面那段代码弹出的对话框是不能把id显示出来的。原因就是json只是个字符串对象而并不是真正的JSON对象,注意最外边那两个单引号。Java代码<script>
var json={"id":1};//去掉单引号
alert(json.id);
</script>去掉单引号,id就成功显示了。此时的json就是个JSON对象。现在从服务器端传回的JSON数据就是像第一个例子那样带单引号的,是不能直接使用的。那怎么办呢?答案就是开头提到的eval()函数。Java代码<script>
var json="{"id":1}";
var jsonObj=eval("("+json+")");//注意这一行
alert(jsonObj.id);
</script>id成功显示。注意两个要点:1、json如果只是单个对象,而不是对象数组,如上例所示,则不能直接写成eval(json).2、不能把eval("("+json+")") 写成eval("("+json+")"),否则id照样不会显示。再举一例:Java代码<script>
var json="[{"id":1}]";
var jsonObj=eval(json);
alert(jsonObj[0].id);
</script>id照样能成功显示。注意区别:json包含的是一个对象数组,而非单个对象。但为什么这样就可以,而前面的例子却不可以,我就稀里糊涂了,还请大侠赐教。