Как программно настроить Джерси для использования Jackson для (де)сериализации JSON?

Я использую Джерси вместе с Grizzly для создания веб-сервиса JSON. Я инициализирую его следующим образом:

    final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
    rc.getProperties().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
    return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);

У меня нет файла web.xml. Я заметил, что Джерси отображал списки отдельных элементов как «элемент», а не как «[элемент]», как я и ожидал. Похоже, это связано с тем, что в Джерси используется другой сопоставитель POJO->JSON, а не Джексон, и по причинам, которые ускользают от меня, они подумали, что было бы неплохо автоматически разворачивать одноэлементные списки.

Я нашел объяснения того, как заставить Джерси использовать Джексона, настроив файл web.xml, но, поскольку у меня нет файла web.xml, я не знаю, как это сделать.

Кто-нибудь может объяснить, как я могу программно настроить Джерси для использования Джексона?


person sanity    schedule 12.03.2012    source источник


Ответы (2)


У меня есть ответ от как это сделать Я программно включаю POJO-отображение в Джерси с помощью Grizzly2?

Идея состоит в том, чтобы добавить библиотеку jersey-json в ваше приложение.

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>${jersey.version}</version>
</dependency>
person ely    schedule 17.01.2013

Взгляните на JacksonJsonProvider в модуле Jackson jax-rs.

Вам нужно подключить его (или подкласс, такой как JacksonJaxbJsonProvider) в контейнере IoC, распознаваемом Джерси (по умолчанию это его собственный, но я лично предпочитаю Guice), или иным образом зарегистрировать его как @Provider

person Steven Schlansker    schedule 12.03.2012
comment
Хм? Один из лучших способов использования Джерси — использование IoC. Это намного лучше, чем web.xml или подключение вручную! - person Steven Schlansker; 13.03.2012
comment
+1: Я получил то, что хотел, используя именно этот подход, с Guice. См. этот пост в блоге: flamingpenguin.co.uk/blog/2012/08/17/ - person MrDrews; 11.02.2013