0

所以我的实体看起来像这样:

public class HappyClass<T>
{
    private String id;
    prviate int ver;
    private Object obj;

    public String getId()
    {
        return this.id;
    }

    public void setId( String id )
    {
        this.id = id;
    }

    public int getVer()
    {
        return this.ver;
    }

    public void setVer( int ver )
    {
        this.ver = ver;
    }

    @JsonTypeInfo( use = Id.NONE )
    public T getObj()
    {
        return obj;
    }

    public void setObj( T obj )
    {
        this.obj = obj;
    }
}

public class HappyGeneric
{
    private String someStuff();

    public String getSomeStuff()
    {
        return this.someStuff();
    }

    public void setSomeStuff( String someStuff )
    {
        this.someStuff = someStuff;
    }
}

如果我实例化这样的类:

HappyClass<HappyGeneric> hc = new HappyClass<HappyGeneric>();

如果我将它发送到 Spring,@ResponseBody它会返回:

{
    "id" : "iamsomeid",
    "ver" : 123,
    "obj" : {
        "someStuff" : "iamsomestuff"
    }
}

但是,当 Spring 和/或 Jackson 尝试解组相同的 JSON 时,它发现主类是 a HappyClass,但是,无论我用什么注释它,getObj()它都会解组为 aLinkedHashMap不是a 。HappyGeneric

任何人有任何想法我可以如何强迫杰克逊将通用解组为原始类?

谢谢!

编辑:我知道我可以通过这种方式调用mapper.convertValue( blah.getObj(), HappyGeneric.class )并获取对象——我希望让 Spring 自动解决它(例如,通过注释)。

4

0 回答 0