在applet中使用GSON库时的reflection权限问题

我正在编写一个进行JSON-RPC调用的Applet。 我正在使用Google JSON库(GSON)将响应JSON转换为类。 Thsi似乎工作得很好但是当我在我的Applet中使用这个代码时,我遇到了一个java.lang.reflect.reflectpermission 。 从我在SO上看到的这个post来看,似乎由于GSON使用Reflection,我不能在Applet中使用它,除非我明确修改了安全策略。 我怎么能绕过这个? 我在我的应用程序中创建了一堆类,并使用Gson.fromJson方法将其Gson.fromJson转换为类。 有没有办法实现相同的function,而无需重写我的一半代码。

(在Java中处理JSON的复杂性似乎属于它自己的联盟​​!)

先谢谢你们。

考虑到JSON本身的简单性,一些用于Java的JSON库确实令人难以置信。 在我看来, http://www.json.org/java/index.html是最好的库,并没有做任何花哨的技巧,只需将JSON解析为自己的特殊结构,就是这样。 这当然意味着你必须制作特定的代码来将JSON对象层次结构转换为你使用的东西但不应该那么难。

GSON更多的是关于XStream (它也可以执行JSON)的基于JSON的持久性,并且对于一个Applet而言听起来有点过于沉重。

除了签署 applet之外,您可以尝试在AccessController#doPrivileged()执行此操作:

 public void init() { AccessController.doPrivileged(new PrivilegedAction { @Override public Object run() { // Put your original init() here. return null; } }); }