2011-11-03 139 views
1

如果我有一个JSON数组,我从服务器中收集,并且我想使用它(例如)进行自动完成 - 我可以创建一个JavaScript数组,然后使用循环将JSON值放入数组中然后将其用于我的自动完成。为什么需要JSON解析?

那是真的吗?

谢谢!

+1

如果您已正确地从脚本中格式化JSON。你可以简单地在你的Javascript中使用JSON解析来获得数组。那里没有任何需要。 – OptimusCrime

回答

1

您从服务器收到的响应将是一个字符串,这对于进行循环来说并不是非常有用。

我假设你希望使用split或regex来自己解析JSON。 这很好,实际上比评估传入数据更安全 - 并且比任务的大多数标准正则表达式更快。

但是,它失去了以JS理解的格式输入数据的优点,并且您可能会错过理论上可能被利用的某些内容。

在Firefox 3.1,JSON parsing is native and safe中。一旦成为标准,使用自己的解析器就没有任何好处。直到那时,这是一个折衷的问题 - 您需要投入多少工作才能确定风险和收益。

+0

'JSON.parse'已经存在于每个重要的当前浏览器中。 – Alnitak

+0

谢谢,现在对我很清楚。 – Alon

+0

@Alnitak IE6&7仍然在那里数量很多,而且IE8需要从用户[而不是“兼容模式”]和站点的角度进入标准模式。不完全准备好被解雇恕我直言。 – SamGoody

0

你可以自己动手,但为什么?一个json解析器就是这样做的。

2

最初为JSON的理由的一部分,你可以这样做:

var object = eval(string); 

,并有JS解释直接做了分析(见http://www.json.org/js.html

但是与缺点是邪恶服务器可以在该字符串中包含真正的JS代码,然后浏览器会解释该代码。

因此,您应该总是使用JSON.parse这将过滤出恶意代码,或者如果它不可用包括一个良好的维护兼容性功能来做同样的工作。

+0

谢谢,现在对我很清楚。 – Alon

1

JSON解析器还可以确保数据是有效的JSON,从而确保恶意代码无法注入到数据中,并在客户端执行。