所以我的实体看起来像这样:
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 自动解决它(例如,通过注释)。