Mit Gson und Abstrakte Klassen

Ich versuche zum Austausch von Nachrichten zwischen einem client und einem server mittels GSON.

Das problem ist Folgendes:

Habe ich diese Struktur:

public class Message 
{
    private TypeOfContent type; // It's a enum 
    private Content       content;
    ....
}

Dann das Objekt content können einen unterschiedlichen Satz von Klassen.

Fand ich 2 tutorials hier und hier, aber keiner von Ihnen das problem löst.

Edit1:

Die Klasse Message ist:


public class Mensagem
{
private TipoMensagem    type;

    private Conteudo        conteudo;

    private Cliente         autor;
    private Cliente         destino;    //null -> to all(broadcast)
}

Und Inhalt ist dieser:

public class Conteudo
{

protected   TipoConteudo typeConteudo; 

protected   String      texto;

protected   Posicao     posicao;

public Conteudo(TipoConteudo typeConteudo, String texto, Posicao posicao)
{
    this.texto   = texto;
    this.posicao = posicao;  
    this.typeConteudo = typeConteudo;
}    
} 

Und ein Beispiel für eine extend-Klasse von contedo ist:

public class ConteudoTweet extends Conteudo 
{

protected   String      pathImagem;


public ConteudoTweet(TipoConteudo typeConteudo, String tweet, Posicao location, String picturePath) 
{
    super(typeConteudo,tweet, location);

    this.pathImagem = picturePath;

}



}

Endlich das, was ich mache, ist wie : "String strObject = new Gson().toJson(mensage);" funktioniert aber auf der Deserialisierung es nicht, weil es meint immer, dass es von der Content-Klasse

  • Haben Sie ein problem mit der Serialisierung, Deserialisierung, beide?
  • beide. Wenn ich versuche, es zu serialisieren zu bekommen ist, in einer Schleife und ich bekomme ein "stack over flow" - Fehler. Die Sache ist die abstrakte Klasse zufrieden ist und keine Botschaft
  • Gson ist nicht in der Lage zu magisch-Abbildung aus einem unbekannten Kind-Klasse Typ basiert auf einem JSON-string. Sie gehen zu müssen, schreiben Sie eine benutzerdefinierte serializer, der schaut auf Ihre TypeOfContent enum und entsprechend agiert.
Schreibe einen Kommentar