Маршаллер / демаршаллер POJO: JAX-RS JSON соответствует GWT-клиенту JSON - PullRequest
2 голосов
/ 07 августа 2011

Я использую Resteasy и GWT.По определенным причинам, как и многие другие, имеют схожие мотивы, я не использую GWT-RPC для некоторых функций программного обеспечения, над которым я работаю.

Мне нужно передавать POJO между клиентом и сервером GWT при помощи маршалингадемаршалирование POJO в / из JSON.

ОК, проще сказать, чем сделать, потому что мне нужны конвертеры POJO-JSON с обеих сторон.

Q1.Есть ли стандартная нотация POJO в JSON?Существует ли в ietf RFC или ISO или ECMA формат нотации POJO в JSON?Или это свободная для всех либертарианская анархия?

Q2.Производят ли Jettison и Jackson (при использовании с JAXB) и Autobeans один и тот же JSON для POJO?

Q3.Это самый важный вопрос.Вы можете игнорировать другие вопросы выше, но вы ДОЛЖНЫ ответить на это.Дайте мне комбинацию пары JSONizer / deJSONizer на стороне сервера и на стороне клиента GWT, которая работает вместе.Например, могу ли я использовать Autobeans на стороне клиента и использовать JAXB-jettison на стороне сервера и ожидать, что нотация JSONized POJO будет такой же?

Q4.Можно ли использовать JAXB-Jettison или JAXB-Jackson на стороне клиента GWT, включив исходный код java для JAXB, Jettison / Jackson в файл what.gwt.xml?Существуют ли части исходного кода JAXB, Jettison / Jackson, которые, например, могут зависеть от отражения или не сериализуемы и т. Д., Которые не позволяют использовать JAXB + Jettison / Jackson в клиентском коде GWT?Если возможно, пожалуйста, объясните, как?

~

Я должен уточнить относительно Q1 :

Я не спрашиваю о RFC для JSON.Я спрашиваю о формате JSON POJO.Когда POJO конвертируется в JSON, каждый делает это по-своему, поэтому я думаю, что должен быть RFC для стандартизации способа и формата POJO, конвертируемого в JSON.Есть стандарт или нет?Я надеюсь, что ваши ответы не должны указывать мне RFC для JSON !!

~

Как насчет

Кто-то должен рассказать мне о

  • badgerfish на клиенте GWT
  • и клиент-сервер GWT соответствуют JSON-RPC.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Не существует стандарта для отображения, но я бы сказал, что существует очевидное простое отображение, учитывая простоту формата JSON и де-факто стандарт Java Beans (т. Е. Отображение методов set / get в имена логических свойств).Одним из немногих исключений является Jettison.

Jettison - это не столько библиотека JSON / POJO, сколько библиотека JSON <-> XML: она преобразует JSON в вызовы API XML (и наоборот), чтобы разрешить использованиеИнструменты XML, такие как JAXB для привязки данных XML, в JSON.Но цена здесь в том, что JSON, который он производит и потребляет, имеет дополнительную сложность, которая необходима только для работы с XML API.И это то, что делает его нестандартным по сравнению с обычными прямыми привязками, такими как используемые Джексоном, GSON, Flex-json и другими «нативными» библиотеками JSON.

Я бы порекомендовал не использовать Jettison, если вы действительно не хотитедействительно должен по какой-то причине.Даже если вы создаете и XML, и JSON - обычно лучше отображать JSON в / из POJO, используя инструменты JSON, и XML, отдельный в / из POJO (используя JAXB и т. Д.).

Jettison предназначался для соединенияразрыв между (тогда) более зрелыми инструментами XML и новым форматом JSON.Но сейчас не так уж много пользы, когда доступны десятки зрелых библиотек JSON.

2 голосов
/ 07 августа 2011

JSON - это просто часть JavaScript, его «изобрел» Дуглас Крокфорд. Вот RFC для application / json: http://www.ietf.org/rfc/rfc4627.txt?number=4627. Таким образом, любое из ваших решений на стороне сервера должно создавать такой же результат.

Мы используем RestyGwt (http://restygwt.fusesource.org/) на клиентской стороне, и это работает как шарм. Его стиль кодирования JSON совместим с привязкой данных по умолчанию Jackson, поэтому он должен работать и с Jackson.

...