Разбор POJO в JSON с использованием JAX-RS и без использования какого-либо специального кода реализации - PullRequest
0 голосов
/ 01 марта 2012

Я смотрел на внутреннюю часть майки, на то, как она конвертирует простой POJO в Json. В Джерси есть интерфейс Provider, который предоставит список contextResolvers с учетом класса и mediaType. как только мы получим contextResolver, мы можем получить от него Context и Marshaller, который может использоваться для получения строки json, как показано ниже.

давайте предположим, что мы хотим сериализовать Pojo "obj". код будет выглядеть следующим образом

Providers ps = ...
ContextResolver<JAXBContext> resolver = ps.getContextResolver(obj.getClass(), MediaType.APPLICATION_JSON_TYPE);
JAXBContext ctx = resolver.getContext(obj.getClass());
ctx.createMarshaller().marshal(obj, writer);

Указанным выше способом мы можем преобразовать любой POJO, у которого есть действительный преобразователь контекста, в json. но вопрос в том, как нам получить обработчик для провайдеров.

PS: я не скомпилировал этот код, но из того, что я могу видеть из источника, именно это и делает Джерси. О том, почему я делаю все это, чтобы мы могли конвертировать объект в JSON напрямую с помощью API JAX-RS. вместо использования любого кода реализации.

Ответы [ 2 ]

1 голос
/ 17 марта 2012

В классах ресурсов JAX-RS используйте аннотацию @Context, чтобы сообщить Джерси, чтобы они вводили производителей:

@Context Producers producers;
0 голосов
/ 01 марта 2012

Итак, ваш вопрос: «как найти поставщиков»?

Вы должны написать код, чтобы найти классы в пути к классам, которые аннотируются @ Provider.

...