【发布时间】:2012-05-19 20:23:59
【问题描述】:
有没有人设法将 Jackson 2.0 与 Jersey 1.12 一起使用。知道会很有趣。我们必须到处使用jackson 1.9.x,因为jersey 有jackson 如此强的耦合。从我所见,甚至球衣 2.0M3 仍在使用杰克逊 1.9.2。所以看来,等球衣队在不久的将来这样做是没有意义的。
【问题讨论】:
有没有人设法将 Jackson 2.0 与 Jersey 1.12 一起使用。知道会很有趣。我们必须到处使用jackson 1.9.x,因为jersey 有jackson 如此强的耦合。从我所见,甚至球衣 2.0M3 仍在使用杰克逊 1.9.2。所以看来,等球衣队在不久的将来这样做是没有意义的。
【问题讨论】:
自定义提供程序有效;和“官方”Jackson 2.0 JSON provider project 也是如此,但具有更多功能(能够在资源方法上使用 @JsonView 注释和其他一些注释)。
这是 JAX-RS 的优点之一:一切都是模块化的,添加新的改进提供程序非常容易。
【讨论】:
Application实现中注册提供者。
我的项目中有 Jackson 2.0 和 Jersey 1.12。我对此没有任何问题,但可能的原因是我有自定义 Provider 和一些额外的 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;
}
}
【讨论】:
如果您尝试将 JsonView 与 Jersey 一起使用,如果您使用此处的方法 2.2,则必须使用 org.codehaus.jackson.map.annotate.JsonView:http://wiki.fasterxml.com/JacksonFAQJaxRs
如果要使用com.fasterxml中的JsonView,则必须在该页面使用通用方法(1)。
【讨论】: