Gson serializuje listę obiektów polimorficznych

Próbuję serializować / deserializować obiekt, który wymaga polimorfizmu, do JSON za pomocą Gson.

To jest mój kod do serializacji:

ObixBaseObj lobbyObj = new ObixBaseObj();
lobbyObj.setIs("obix:Lobby");

ObixOp batchOp = new ObixOp();
batchOp.setName("batch");
batchOp.setIn("obix:BatchIn");
batchOp.setOut("obix:BatchOut");

lobbyObj.addChild(batchOp);

Gson gson = new Gson();
System.out.println(gson.toJson(lobbyObj));

Oto wynik:

 {"obix":"obj","is":"obix:Lobby","children":[{"obix":"op","name":"batch"}]}

Serializacja działa głównie, z wyjątkiem braku treści odziedziczonych członków (w szczególnościobix:BatchIn iobixBatchout brakuje ciągów). Oto moja klasa podstawowa:

public class ObixBaseObj  {
    protected String obix;
    private String display;
    private String displayName;
    private ArrayList<ObixBaseObj> children;

    public ObixBaseObj()
    {
        obix = "obj";
    }

    public void setName(String name) {
        this.name = name;
    }
        ...
}

Oto jak wygląda moja dziedziczona klasa (ObixOp):

public class ObixOp extends ObixBaseObj {
    private String in;
    private String out;

    public ObixOp() {
        obix = "op";
    }
    public ObixOp(String in, String out) {
        obix = "op";
        this.in = in;
        this.out = out;
    }
    public String getIn() {
        return in;
    }
    public void setIn(String in) {
        this.in = in;
    }
    public String getOut() {
        return out;
    }
    public void setOut(String out) {
        this.out = out;
    }
}

Zdaję sobie sprawę, że mogę użyć do tego adaptera, ale problem polega na tym, że serializuję kolekcję typu klasy podstawowejObixBaseObj. Po niej dziedziczy około 25 klas. Jak mogę sprawić, aby ta praca była elegancka?

questionAnswers(3)

yourAnswerToTheQuestion