Java MrBean模块在反序列化时是否仍然自动支持动态实现简单接口?
当从Jersey1客户机转换到Jersey2客户机(使用jackson 2.8.6)时,我现在在尝试读取接口时遇到一个映射异常Java MrBean模块在反序列化时是否仍然自动支持动态实现简单接口?,java,json,jackson,jersey,Java,Json,Jackson,Jersey,当从Jersey1客户机转换到Jersey2客户机(使用jackson 2.8.6)时,我现在在尝试读取接口时遇到一个映射异常 WebTarget resource = helper.resource(path); if(schedule != null) resource = resource.queryParam("schedule", schedule); return resource.request().get(new GenericType<MyInterface>(){
WebTarget resource = helper.resource(path);
if(schedule != null) resource = resource.queryParam("schedule", schedule);
return resource.request().get(new GenericType<MyInterface>(){});
Caused by: javax.ws.rs.client.ResponseProcessingException: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.mycompany.MyInterface: abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
接口的动态实例化现在消失了吗?如果没有,需要执行哪些额外的配置步骤才能使其正常工作
(我们的依赖关系有点混乱,所以我想我用的是Jersey 1.6和Jackson 1.9.8)
编辑:
作为我们之前所依赖的行为的另一个例子,看看哪里有一个没有注释的简单界面我想我是在流了很多血、汗水和眼泪后发现的 我发现我配置的ObjectMapper实际上不是正在使用的那个 球衣1
clientConfig.getSingletons().add(new JacksonJsonProvider(objectMapper));
Client client = new Client(urlConnectionClientHandler, clientConfig);
JAXRS2(什么不起作用)
我发现创建实际使用的ObjectMapper的组件是一个JacksonJaxbJsonProvider,向ClientConfig注册它不起作用,但在客户端注册它起作用
JAXRS2(什么起作用了)
objectMapper.registerModule(new MrBeanModule());
clientConfig.getSingletons().add(new JacksonJsonProvider(objectMapper));
Client client = new Client(urlConnectionClientHandler, clientConfig);
clientConfig.register(new JacksonJsonProvider(objectMapper));
Client client = ClientBuilder.newClient(cc);
Client client = ClientBuilder.newClient(cc);
client.register(new JacksonJaxbJsonProvider(objectMapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS));