Способ сериализации объекта на стороне клиента GWT в строку и десериализации на сервере? - PullRequest
2 голосов
/ 24 ноября 2011

В настоящее время наше приложение использует GWT-RPC для большинства клиент-серверных коммуникаций.Где это ломается, когда нам нужно автоматически генерировать изображения.Мы генерируем изображения на основе десятков параметров, поэтому мы создаем большие сложные URL-адреса и с помощью запроса get получаем динамически построенный образ.

Если бы мы могли найти способ сериализации объектов Java в клиентском коде gwt и десериализациина стороне сервера мы могли бы значительно облегчить работу с нашими URL.Вместо

http://host/page?param1=a&param2=b&param3=c....

мы могли бы иметь

http://host/page?object=?JSON/XML/Something Magicical

, а на сервере просто иметь

new MagicDeserializer.(request.getParameter("object"),AwesomeClass.class);

Мне все равно, какой промежуточный формат является json / xml/ что бы я ни хотел, чтобы я перестал отслеживать параметры маршалинга / демаршаллинга в моем клиентском коде gwt, а также в сервлетах.

Ответы [ 2 ]

3 голосов
/ 24 ноября 2011

Использование AutoBean Framework. То, что вам нужно, это просто и все здесь http://code.google.com/p/google-web-toolkit/wiki/AutoBean

0 голосов
/ 01 апреля 2015

Я видел самый успешный и наименьший объем кода с использованием этой библиотеки:

https://code.google.com/p/gwtprojsonserializer/

Наряду со стандартным toString (), который вы должны иметь для всех классов объектов, ятакже есть то, что называется toJsonString () внутри каждого класса, который я хочу "JSONable".Обратите внимание, что каждый класс должен расширять JsonSerializable, который поставляется с библиотекой:

public String toJsonString()
{
    Serializer serializer = (Serializer) GWT.create(Serializer.class);

    return serializer.serializeToJson(this).toString();
}

Чтобы превратить строку JSON обратно в объект, я поместил статический метод внутри того же класса, который воссоздает сам класс:

public static ClassName recreateClassViaJson(String json)
{
    Serializer serializer = (Serializer) GWT.create(Serializer.class);

    return (ClassName) serializer.deSerialize(json, "full.package.name.ClassName");
}

Очень просто!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...