JavaScript的JSON工具支持

  • 在前台代码中如果要使用文本进行数据传输,依靠的一定是文本数据,可是对于文本数据的解析需要使用eval()函数处理,但是这个函数有bug,非常严重的bug.
  • 观察eval()函数的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Javascript_json</title>
    <script type="text/javascript" charset="utf-8">
        window.onload = function () {
            var num = 10;
            var jsonText = "{\"count\":++num}";
            //解析jsontext文本
            var jsonObj = eval("("+jsonText+")");
            //调用json中的count函数
            alert(jsonObj.count);
        }
    </script>
</head>
<body>

</body>
</html>
  • 运行结果

在这里插入图片描述

  • 此时使用eval()函数之后可以清楚的发现两个问题

    • eval()的函数每次编写都要协商"()",
    • 如果eval()函数处理之后,如果文本数据包含有程序代码,则程序代码会执行,存在有安全隐患问题.
  • 所以在JSON操作的标准上,又提供了一个自己的JavaScript开发工具文件

  • JSON.js脚本
    https://pan.baidu.com/s/1NUIy_65HG7x0-up1mbFj1A

  • 将js文件放入到项目中,然后在网页中导入

 <script type="text/javascript" src="/js/json.js" charset="UTF-8"></script>
  • 使用JSON中的parse()方法代替原有的eval()函数
 <script type="text/javascript" charset="utf-8">
     window.onload = function () {
         var num = 10;
         var jsonText = "{\"count\":++num}";
             try {
                 //解析jsontext文本
                 var jsonObj = JSON.parse(jsonText);
                 //调用json中的count函数
                 alert(jsonObj.count);
             }catch(e){
                 alert(e);
             }

     }
 </script>
  • 执行结果

在这里插入图片描述

  • JSON.parse()和eval()函数的区别?
    • JavaScript中奖JSON文本转换为JSON对象的只有eval()函数,如果直接使用eval()函数进行转换,则需要在文本上添加"()",如果文本中包含有程序内容则会直接执行程序代码.
    • JSON.parse()是JavaScript提供的一个工具类,这个工具类封装了eval()函数操作,如果文本中包含有程序代码,则会抛出异常,如果文本没有问题,则会自动在文本上添加"()"括号之后,执行eval()函数

猜你喜欢

转载自blog.csdn.net/qq_43386754/article/details/86365285