JSON.parse()与eval()的区别

来源:互联网 发布:11选5三角算法 编辑:程序博客网 时间:2024/05/18 00:22

JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。

出于安全考虑用json.parse,它会自动检测是否符合json格式。而eval不会检测是否符合格式,如果字符串中有js代码时,eval会一并执行,例如:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JaneYork的博客——eval测试</title></head><body><input type="button" value="测试" onclick="f()"></body><script type="text/javascript">function f(){/* eval("("+alert(123)+")"); */这里会弹框var test = '{"b" : window.location.href="https://www.baidu.com" }';这里会跳转eval("("+ test +")");};</script></html>

详细理解JSON请看:一分三十秒理解JSON

,eval执行了js代码,跳转到第三方网站,很不安全。

如果不清楚格式的话,可以使用JSON格式在线校验