Adobe AIR:处理服务器中的JSON对象
我有一个脚本,可以通过Ajax调用从远程服务器检索对象。服务器以JSON表示法返回对象。 -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------------------
但是,出于安全原因,在Adobe AIR中使用eval()受到限制。因此,我能够从远程服务器获得答复,但是不能将它们转换回JavaScript对象。有没有解决此问题的方法?我想对我的JavaScript对象使用JSON,因为它几乎可以立即使用。
旁注:我确实理解强迫问题的安全隐患,但是我将为竞争做一些快速的应用程序开发,因此该程序只是一个快速的原型,不能用于生产目的。不过,如果我现在想做的事有更好的选择,那就太好了
更新:
感谢Theo和jsight的回答;
我今天学到的重要一件事是,通过使用
<script src="lib/myClasses.swf" type="application/x-shockwave-flash"></script>
由Adobe AIR扩展的标签。请查看Theo的链接以获取更多详细信息!
解决方案
回答
我们看过as3corelib吗?它似乎为JSON数据提供了AS3解析器,我希望它不依赖于eval(如我们所述,eval往往不利于安全性)。 Javascript也有类似的库,由于(对)潜在数据调用eval有安全隐患,它们往往是解析json的首选方法。
回答
JSON是Javascript对象表示法,因此,如果我们使用的是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是一个不错的起点。
回答
我们可以在此处找到用JavaScript编写的JSON解析器(此处为源代码)。我们还可以使用JavaScript中的as3corelib JSON解析器,这里有有关如何从JavaScript访问ActionScript库的说明。
回答
我认为,如果我们使用iframe和沙箱桥,这是可能的。我们应该能够对沙盒iframe中的已下载代码运行eval(),
摘录自Adobe AIR 1.1 Doc's
" ...在沙盒子框架中运行内容可能更方便,这样就可以不受eval()限制地运行内容..."
另一篇相关文章:在AIR上构建:使用沙盒桥
回答
当前的AIR版本(v2.5)通过JSON.stringify()和JSON.parse()捆绑了具有本机JSON支持的更新WebKit。