如果我有一个JSON数组,我正在从服务器中恢复,我想用它(例如)进行自动完成 - 我可以创建一个JavaScript数组,并使用一个循环将JSON值放入数组中然后将其用于我的自动填充。
那是不是真的错了?
谢谢!
答案 0 :(得分:2)
最初JSON的基本原理之一就是你能做到:
var object = eval(string);
让JS解释器直接进行解析(参见http://www.json.org/js.html)
然而,其缺点是恶意服务器可能在该字符串中包含真正的JS代码,然后您的浏览器会将其解释。
因此,您总是使用JSON.parse
来过滤掉恶意代码,或者如果不可用,则包括维护良好的兼容性功能来执行相同的工作。
答案 1 :(得分:1)
您从服务器收到的响应将是一个字符串,这对于进行循环不是很有用。
我假设您希望使用split或regex来自行解析JSON。 这很好,实际上比评估传入的数据更安全 - 并且比任务的大多数标准正则表达式更快。
然而,它失去了以JS理解的格式传入数据的优点,并且您可能会错过理论上可能被利用的内容。
在Firefox 3.1中,JSON parsing is native and safe。一旦成为标准,使用自己的解析器就没有任何好处。到那时,它是一个权衡问题 - 你需要投入多少工作才能获得风险和收益。
答案 2 :(得分:1)
JSON解析器还可以确保数据是有效的JSON,从而确保恶意代码无法注入您的数据,并在客户端上执行。
答案 3 :(得分:0)
你可以自己做,但为什么?一个json解析器就是这么做的。