Java JAX-RS客户端-如何使用Jackson从JSON反序列化通用参数

Java JAX-RS客户端-如何使用Jackson从JSON反序列化通用参数,java,json,rest,cxf,Java,Json,Rest,Cxf,为了代码的可重用性,我有一个超级接口和一些扩展接口,例如: public interface AbstractService<T extends AbstractDto> { @GET @Path("/") @Produces("application/json") T get(@QueryParam("id") Long id); } @WebService @Path("/office") public interface OfficeServi

为了代码的可重用性,我有一个超级接口和一些扩展接口,例如:

public interface AbstractService<T extends AbstractDto> {
    @GET
    @Path("/")
    @Produces("application/json")
    T get(@QueryParam("id") Long id);
}

@WebService
@Path("/office")
public interface OfficeService extends AbstractService<OfficeDto> { }
由于
java.lang.ClassCastException失败:java.util.LinkedHashMap无法强制转换为OfficeDto

如果我删除泛型,一切都很好(除了所有服务中重复的代码)。jackson似乎不明白服务的
T
是实际的
OfficeDto
,并且无法返回到LinkedHashMap键值对反序列化(这对于JavaScript很好,但对于Java客户端则不行)

如何在JAX-RS中使用通用参数?当前的实现是Apache CXF 3.1,但在切换到Jersey时似乎仍然存在相同的问题

OfficeService service = JAXRSClientFactory.create("http://...", OfficeService.class, 
    Arrays.asList(new Object[] {
        new org.codehaus.jackson.jaxrs.JacksonJsonProvider()
    }));
OfficeDto office = service.get(1L); // exception!