8

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

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

旁注:我确实理解强制执行该问题的安全隐患,但我将为比赛做一些快速的应用程序开发,所以该程序只是一个快速原型,而不是用于生产目的。不过,如果有更好的选择来代替我现在正在尝试做的事情,那就太好了


更新:

感谢Theojsight的回答;

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

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

4

5 回答 5

7

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

于 2008-08-24T08:11:29.673 回答
3

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

于 2010-12-24T06:19:52.397 回答
2

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

于 2008-08-22T03:25:15.743 回答
0

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 是一个不错的起点。

于 2008-08-22T11:26:32.183 回答
0

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

摘自Adob​​e AIR 1.1 Doc 的 “...在沙盒子框架中运行内容可能更方便,以便可以在不受 eval() 限制的情况下运行内容...”

另一篇相关文章: 在 AIR 上构建:使用沙盒桥

于 2008-08-25T18:39:22.977 回答