杰克逊在春天:如何解读一个“泛型”类,而不认为它是一个LinkedHashMap?

时间:2012-12-03 19:55:06

标签: json spring jackson

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

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>();

如果我以@ResponseBody将其发送给Spring,则会返回:

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

然而,当Spring和/或Jackson尝试解组相同的JSON时,它会发现主要类是HappyClass,但getObj()它解组为LinkedHashMap并且一个HappyGeneric,无论我似乎用它注释。

任何人都有任何想法如何迫使杰克逊解放原始类的通用名单?

谢谢!

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

0 个答案:

没有答案