程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Jackson和泛型类型参考大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Jackson和泛型类型参

开发过程中遇到Jackson和泛型类型参的问题如何解决?下面主要结合日常开发的经验,给出你关于Jackson和泛型类型参的解决方法建议,希望对你解决Jackson和泛型类型参有所启发或帮助;

这是java类型擦除的一个众所周知的问题:T只是一个类型变量,你必须指示实际的类,通常将其作为Class参数。没有这些信息,最好的办法就是使用界限。普通T与“ T扩展对象”大致相同。然后Jackson会将JsON对象绑定为Maps。

在这种情况下,tester方法需要有权访问Class,你可以构造

JavaType type = mapper.getTypeFactory().
  constructCollectionType(List.class, Foo.class)

接着

List<Foo> List = mapper.readValue(new file("input.Json"), typE);

解决方法

我想将jackson json库用于通用方法,如下所示:

public Myrequest<T> tester() {
    TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>();  
    MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonrequest,typeRef);
    return requestWrapper.getrequest();
}

&Hellip;

public class MyWrapper<T> {

    private Myrequest<T> request;

    public Myrequest<T> getrequest() {
        return request;
    }

    public void setrequest(Myrequest<T> request) {
        this.request = request;
    }
}


 public class Myrequest{
     private List<T> myobjects;

     public void setMyObjects(List<T> ets) {
         this.myobjects = ets;
     }

     @NotNull
     @JsonIgnore
     public T getMyObject() {
         return myobjects.get(0);
     }
}

现在的问题是,当我调用位于请求对象内的getMyObject()时,杰克逊将嵌套的自定义对象作为LinkedHashMap返回。有什么方法可以指定需要返回T对象吗?例如:如果我发送了类型为Customer的对象,则应该从该List?中返回Customer。

大佬总结

以上是大佬教程为你收集整理的Jackson和泛型类型参考全部内容,希望文章能够帮你解决Jackson和泛型类型参考所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。