json解析数据

版权声明:文章来源-苏亿_blog https://blog.csdn.net/qq_40325734/article/details/82469211

今天工作中遇到了 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>

猜你喜欢

转载自blog.csdn.net/qq_40325734/article/details/82469211
今日推荐