したがって、私のエンティティは次のようになります。
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()
わかります。LinkedHashMap
HappyGeneric
ジャクソンにそのジェネリックを元のクラスにアンマーシャリングするように強制する方法を知っている人はいますか?
ありがとう!
編集:私は呼び出しmapper.convertValue( blah.getObj(), HappyGeneric.class )
てオブジェクトをそのように取得できることを認識しています-私はSpringにそれを自動的に理解させたいと思っていました(たとえば、注釈を介して)。