我有一个脚本,通过Ajax调用从远程服务器检索对象。 服务器以JSON表示法返回对象。

但是,在Adobe AIR中,出于安全原因,使用eval()存在限制。 所以我能够从远程服务器获得回复,但不能将它们变回JavaScript对象。 这个问题有解决方法吗? 我想将JSON用于我的JavaScript对象,因为它几乎可以立即使用。

旁注:我确实理解强制问题的安全隐患,但我会为竞争做一些快速的应用程序开发,因此该程序只是一个快速的原型,而不是用于生产目的。 尽管如此,如果有一个比我现在想要做的更好的替代方案,那将会很棒


更新:

感谢Theojsight的回答;

我今天学到的一件重要事情是,我实际上可以通过使用它来使用ActionScript库

<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
由Adobe AIR扩展的标记。 查看Theo的链接了解更多详情!

===============>>#1 票数:6 已采纳

你可以在这里找到用JavaScript编写JSON解析器这里是 源代码 )。 您还可以使用JavaScript中的as3corelib JSON解析器,这里有关于如何从JavaScript访问ActionScript库的说明

===============>>#2 票数:3

当前的AIR版本(v2.5)通过JSON.stringify()和JSON.parse()捆绑了一个具有本机JSON支持的新WebKit。

===============>>#3 票数:2

你看过as3corelib了吗? 它似乎为JSON数据提供了一个AS3解析器,我希望它不依赖于eval(正如你所指出的那样,eval往往对安全性不利)。 Javascript也有类似的库,由于调用eval(可能)邪恶数据的安全隐患,它们往往是解析json的首选方式。

===============>>#4 票数:0

JSON是Javascript Object Notation,所以如果你使用的是Javascript,那么你已经存在! 看看这些链接,他们举例说明如何从JSON创建Javascript对象:

http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)

http://betterexplained.com/articles/using-json-to-exchange-data/

如果您决定采用Flex / AS3路线,那么正如jsight所说,as3corelib是一个很好的起点。

===============>>#5 票数:0

我认为如果您使用iframe和沙箱桥,这是可能的。 您应该能够在沙盒iframe中的下载代码上运行eval(),

Adobe AIR 1.1 Doc的摘录“......在沙盒子框架中运行内容可能更方便,因此内容可以在没有eval()限制的情况下运行......”

另一篇相关文章: 在AIR上构建:使用Sandbox Bridges

  ask by pkchukiss translate from so

未解决问题?本站智能推荐: