2010-05-07 24 views
3

我正在编写一个使一些JSON-RPC调用的Applet。我使用Google JSON库(GSON)将响应JSON转换为类。这似乎工作正常,但是当我在我的Applet中使用此代码时,我遇到了一个java.lang.reflect.reflectpermission。从我在this thread上看到的SO,似乎GSON使用Reflection后,除非明确修改安全策略,否则我不能在Applets中使用它。我怎样才能解决这个问题?我在我的应用程序中创建了一堆类,并使用Gson.fromJson方法将其转换为类。有没有什么办法可以实现相同的功能,而无需重新编写一半的代码。反射在小应用程序中使用GSON库时的权限问题

(该用JSON在Java中处理的复杂性似乎是在它自己的联赛!)提前家伙

感谢。

回答

0

对Java的一些JSON库确实头脑麻木复杂尤其是考虑到JSON本身的简单性。在我看来,http://www.json.org/java/index.html是最好的库,并没有做任何花哨的技巧,只是将JSON解析为它自己的特殊结构,就是这样。这当然意味着您必须制定特定的代码才能将JSON对象层次结构转换为您使用的东西,但这不应该很难。

GSON更多的是关于XStream(它也可以做JSON)的基于JSON的持久化,而且对于Applet来说听起来有点过重。

+0

嗨艾斯科。使用JSON.org库编写JSON似乎很容易,但将JSON解析回Objects似乎相当困难。我似乎无法找到任何好的例子。您能否指出我正确的方向 - 将JSON解析为JSONObject的文档/文档。谢谢 – 2010-05-08 15:57:30

+0

@mridang:使用我链接的JSON库,'JSONObject parsed = new JSONObject(yourJSONContentAsString);'。对,就这么简单。 – Esko 2010-05-08 16:03:53

+0

这也为我解决了。一个很好的简单解决谢谢! – 2011-07-10 01:58:23

0

除了signing的小程序,你可以尝试在AccessController#doPrivileged()执行此:

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

我已经尝试添加doPrivileged上下文,但反射仍会引发相同的安全异常。 – 2011-07-10 00:10:12