evalJSON
1.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 中定义),这些界定符将会被移除。