我想为javax.ws.rs.client.SyncInvoker写一个代理:

    @Override
    public <T> T get(GenericType<T> responseType) {
        String payload = delegate.get(String.class);
        // very important logic...
        return objectMapper.readValue(payload, responseType); // fix this
    }


当然,上面的代码不会编译,因为杰克逊对jax-rs的GenericType一无所知。看来我可以使用以下方法之一:

public <T> T readValue(String content, TypeReference valueTypeRef)
public <T> T readValue(String content, JavaType valueType)


但是我对找到将GenericType转换为TypeReferenceJavaType的正确方法感到困惑。

最佳答案

将我的评论提升为答案。尝试这个:

JavaType javaType = objectMapper.constructType(responseType.getType())

关于java - 使用JAX-RS GenericType进行Jackson对象映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60150948/

10-10 19:51