2012-05-19 2 views
4

У кого-нибудь удалось использовать jackson 2.0 с Jersey 1.12. Это будет очень интересно узнать. Мы должны использовать jackson 1.9.x повсюду, просто потому, что у Джерси есть джексон, так сильно связанный. Из того, что я вижу, даже джерси 2.0M3 все еще использует jackson 1.9.2. Так что, похоже, нет смысла ждать, когда команда Джерси сделает это в ближайшем будущем.Jackson 2.0 с Джерси 1.12

ответ

4

Изготовитель пользовательских услуг; и «официальный» Jackson 2.0 JSON provider project делает то же самое, с чуть большим количеством функций (возможность использования аннотации @JsonView и нескольких других методов ресурса).

Это одна из приятных вещей с JAX-RS: все модульно, и добавлять новых улучшенных поставщиков очень просто.

+0

Должен ли я просто включить банку? Что требуется, чтобы заставить Джерси использовать этого провайдера? – husayt

+0

Вы можете попробовать просто включить его - 2.0 имеет META-INF/services - но если это не сработает, вам необходимо зарегистрировать провайдера в реализации 'Application'. – StaxMan

+2

Что странно, что работает, даже с функцией PojoMapping, включенной в Джерси. – husayt

1

У меня Jackson 2.0 и Jersey 1.12 в моем проекте. У меня не было никаких проблем с этим, но, вероятно, причина в том, что у меня был пользовательский поставщик с некоторыми дополнительными настройками ObjectMapper. Упрощенная версия:

import javax.ws.rs.ext.ContextResolver; 
import javax.ws.rs.ext.Provider; 

import com.fasterxml.jackson.databind.ObjectMapper; 

@Provider 
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> { 

    private final ObjectMapper defaultObjectMapper; 

    public ObjectMapperProvider() { 
     defaultObjectMapper = new ObjectMapper(); 
    } 

    @Override 
    public ObjectMapper getContext(Class<?> type) { 
     return defaultObjectMapper; 
    } 
} 
+6

Вам нужно было сделать что-нибудь особенное, чтобы получить Джерси, чтобы использовать этот провайдер? Я пытаюсь перейти от Jackson 1.9 до 2.0 (как описано в [этом вопросе] (http://stackoverflow.com/questions/15865896/migrate-a-jackson-objectid-serializer-from-jackson-1-9- to-2-0)), и моя реализация ContextResolver не используется. – Eyal

-1

Если вы пытаетесь использовать JsonView с Джерси, вы должны использовать org.codehaus.jackson.map.annotate.JsonView, если вы используете метод 2.2 здесь: http://wiki.fasterxml.com/JacksonFAQJaxRs

Если вы хотите использовать JsonView из com.fasterxml, вы должны использовать общий метод (1) на этой странице.

Смежные вопросы