专修虚拟机 2015-12-31 09:14 采纳率: 0%
浏览 1545

Prototype.js evalJSON()等于json.js的parseJSON()?

Prototype.js evalJSON()方法与json.js的parseJSON()功能是否一样啊?
这两个方法是不是都是把json字符串转化为json对象啊?

  • 写回答

2条回答 默认 最新

  • Exploring1024 2015-12-31 09:17
    关注

    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 下载。

    评论

报告相同问题?