Парсинг JSON в GWT

Мы используем платформу GWT с клиентом GWTP и остальными веб-сервисами в контейнере GUICE. Вызов службы Rest из клиента GWT выполняется с помощью JSONPRequestbuilder.

Я хочу знать, какой метод разбора строки ответа JSON лучше всего подходит для GWT? - JSON для сериализации/десериализации Java

После долгих поисков в Google я обнаружил, что у нас есть много вариантов.

  1. GWT построил метод JSONParser parseStrict, который называется безопасным и лучшим способом. Но это может не подойти для сложной строки ответа JSON. Потому что вам нужно написать много кода для анализа каждого элемента в ответе JSON и преобразования в объект Java.
  2. Подход GWT AutobeanFactory - я не знаю, как лучше всего это использовать? Мы используем GWT 2.4, у вас вообще нет полного примера использования этого подхода. Везде люди говорят, что это подход, но нигде нет подробного описания этого. Несколько примеров в Google были из более старых версий gwt, которые были сильно изменены в GWT 2.4. Пожалуйста, поделитесь хорошим примером с подходом GWT 2.4 и Autobean factory для JSON ser/deser...
  3. Типы оверлеев JavaScript. Люди говорят, что это небезопасный способ. Поэтому я немного сомневаюсь, стоит ли нам использовать это или нет.

Более того, мы очень скоро переходим с GWT на SmartGWT. Надеюсь, остальные сервисы вызовов с ними должны продолжать работать даже в SmartGWT без каких-либо изменений. (Поскольку SmartGWT также поставляется с предопределенной поддержкой остальных форматов JSON, которую мы можем не использовать, поскольку мы уже создали эти службы в целом).


person Santosh    schedule 21.05.2012    source источник


Ответы (1)


Если вам нужен самоанализ (у вас нет строгой схемы для ваших объектов JSNO), используйте JSONParser.
Вы также можете использовать, с немного более простым в использовании API, но вообще не документированным, com.google.web.bindery.autobean.shared.Splittable (точнее, JsonSplittable в DevMode и JsoSplittable в режиме prod).

Если у вас строгая схема, используйте либо типы наложений JSO, либо AutoBean. AutoBean имеет небольшие накладные расходы по сравнению с JSO, но позволяет использовать List, Set и Map вместо JsArray и пользовательских JSO. AutoBean также можно использовать на стороне сервера или из Java-клиентов, отличных от GWT, через файл AutoBeanFactorySource. Это также может быть полезно для модульных тестов, где вам не нужен вялый GWTTestCase, в отличие от JSO.

Вы можете найти пример AutoBean в его официальной документации: http://code.google.com/p/google-web-toolkit/wiki/AutoBean

Что касается безопасности, пока вы используете parseStrict (который AutoBean использует скрыто, так что не беспокойтесь), вы в безопасности. JSO не будут менее безопасными, чем AutoBean или JSONParser (или Splittable).

person Thomas Broyer    schedule 21.05.2012
comment
Мы начали использовать типы наложения Javascript для анализа ответа JSON, и нам это удалось. Теперь я не знаю, как мы можем создать запрос JSON из объектов Java, используя типы наложения JSO. Не могли бы вы предложить мне, как это сделать? - person Santosh; 01.06.2012
comment
stackoverflow.com/questions/10845431/ - person Thomas Broyer; 01.06.2012