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()わかります。LinkedHashMapHappyGeneric

ジャクソンにそのジェネリックを元のクラスにアンマーシャリングするように強制する方法を知っている人はいますか?

ありがとう!

編集:私は呼び出しmapper.convertValue( blah.getObj(), HappyGeneric.class )てオブジェクトをそのように取得できることを認識しています-私はSpringにそれを自動的に理解させたいと思っていました(たとえば、注釈を介して)。

4

0 に答える 0