Проблемы с разрешением отражения при использовании библиотеки GSON в апплете - PullRequest
3 голосов
/ 07 мая 2010

Я пишу апплет, который делает некоторые вызовы JSON-RPC. Я использую библиотеку Google JSON (GSON) для приведения ответа JSON в класс. Это, кажется, работает нормально, как есть, но когда я использую этот код в своем апплете, я получаю java.lang.reflect.reflectpermission. Из того, что я прочитал в этой теме в SO, кажется, что, поскольку GSON использует Reflection, я не могу использовать его в апплетах, если не внесу явные изменения в политику безопасности. Как я могу обойти это? Я создал несколько классов в своем приложении и использовал метод Gson.fromJson для приведения его в класс. Есть ли способ достичь той же функциональности без необходимости переписывать половину моего кода.

(Сложность работы с JSON в Java, похоже, сама по себе!)

Заранее спасибо, ребята.

Ответы [ 2 ]

0 голосов
/ 07 мая 2010

Некоторые библиотеки JSON для Java на самом деле очень сложны, особенно учитывая простоту самого JSON.На мой взгляд, http://www.json.org/java/index.html - лучшая библиотека, которая не делает никаких хитростей, просто разбирает JSON в его собственную специальную структуру и все.Это, конечно, означает, что вам нужно создать специальный код, чтобы превратить иерархию JSON Object в то, что вы используете, но это не должно быть так сложно.

GSON больше о постоянстве на основе JSON в духе XStream (который также может выполнять JSON) и звучит слишком тяжело для простого апплета.

0 голосов
/ 07 мая 2010

Помимо подписи апплета, вы можете попробовать выполнить это в AccessController#doPrivileged():

public void init() {
    AccessController.doPrivileged(new PrivilegedAction<Object> {
        @Override public Object run() {
            // Put your original init() here.
            return null;
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...