zoukankan      html  css  js  c++  java
  • json解析数据

    今天工作中遇到了 js 解析 后端php传递过来的json字符串错误使用alert查看数据 结果返回的是Undefined类型(未定义或者属性为null),去网上看了下关于js解析的资料发现现在有好几种解析的方式:

    第一种方式:

    使用eval函数。 
    var dataObj = eval(“(“+json+”)”);

    加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行将json数据转换为json对象。

    使用eval函数解析JSON是一种很不安全的方式,能不用最好就不用,原因是eval不但可以解析JSON字符串,还会执行其中的代码块(如果有的话)

    第二种方式:

    使用JSON.parse()函数.

    JSON.parse()之可以解析json格式的数据,并且会对要解析的字符串进行格式检查,如果格式不正确则不进行解析,而eval()则可以解析任何字符串,eval是不安全的。

    两者区别:

    比如下面的字符串:

    var str = 'alert(1000.toString())';eval(str);
    JSON.parse(str);

    用eval可以解析,并且会弹出对话框,而用JSON.parse()则解析不了。 其实alert并没有什么坏处,可怕的是如果用恶意用户在json字符串中注入了向页面插入木马链接的脚本,用eval也是可以操作的,而用JSON.parse()则不必担心这个问题。

    注意:某些低级的浏览器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载。

    解析数组:
     

    <script language="javascript">
    
    var obj =eval(arr);
    
    alert(obj[0]);
    
    alert(obj[1]);
    
    alert(obj[2]);
    
    </script>
  • 相关阅读:
    硅谷独角兽公司的监控系统长啥样?
    通过jQuery设置全局Ajax加载时呈现Loading
    Jquery遮罩插件,想罩哪就罩哪!
    jquery 读取textarea内容
    easy ui layout 高度 宽度自适应浏览器
    css调节样式
    ORACLE数据库的连接
    spring cloud API网关
    嵌套查询与连接查询的性能
    对于where 1=1 这种条件传入需要'%s'
  • 原文地址:https://www.cnblogs.com/sybk/p/10004707.html
Copyright © 2011-2022 走看看