【问题标题】:Use JAX-RS GenericType for Jackson object mapping使用 JAX-RS GenericType 进行 Jackson 对象映射
【发布时间】:2020-02-10 12:58:36
【问题描述】:

我想为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()) 呢?
  • @jannis omg 非常感谢你。我受苦了一整天,解决办法就是这么简单……:)

标签: java jackson jax-rs


【解决方案1】:

将我的评论推广到答案。试试这个:

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

【讨论】:

    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多