evalJSON1.5.1
evalJSON([sanitize = false]) -> object
执行一个 JSON 格式的字符串,并返回结果对象。如果可选的参数 sanitize
被设置为
true
,则会检测字符串中是否包含恶意或错误代码,若检测到,则会停止字符串的执行,
不再调用 eval
。
如果 JSON 字符串格式错误或在字符串中检测到恶意代码,将会抛出一个 SyntaxError
异常。
样例
var person = '{ "name": "Violet", "occupation": "character" }'.evalJSON();
person.name;
//-> "Violet"
person = 'grabUserPassword()'.evalJSON(true);
//-> SyntaxError: Badly formed JSON string: 'grabUserPassword()'
person = '/*-secure-\n{"name": "Violet", "occupation": "character"}\n*/'.evalJSON()
person.name;
//-> "Violet"
注意
如果从外部源接收数据,请将参数 sanitize
设为 true
,以防止 XSS 攻击。
因为 String#evalJSON
方法内部调用了 String#unfilterJSON,
因此如果字符串包含有安全注释界定符(在 Prototype.JSONFilter
中定义),这些界定符将会被移除。