Gson serialisiert eine Liste polymorpher Objekte

Ich versuche, ein Objekt, das Polymorphismus beinhaltet, mit Gson in JSON zu serialisieren / zu deserialisieren.

Dies ist mein Code für die Serialisierung:

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

Hier ist das Ergebnis:

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

Die Serialisierung funktioniert größtenteils, mit der Ausnahme, dass der Inhalt der geerbten Mitglieder fehlt (insbesondereobix:BatchIn undobixBatchout Zeichenfolgen fehlen). Hier ist meine Basisklasse:

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;
    }
        ...
}

So sieht meine geerbte Klasse (ObixOp) aus:

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;
    }
}

Mir ist klar, dass ich dafür einen Adapter verwenden könnte, aber das Problem ist, dass ich eine Sammlung von Basisklassentypen serialisiereObixBaseObj. Es gibt ungefähr 25 Klassen, die davon erben. Wie kann ich das elegant machen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage