2017-08-22 4 views
0

Hallo, ich hoffe hier kann mir jemand helfen, ich in einem Android App arbeite, habe ich bereits folgendes Gson Objektdeserialize kompliziert Gson String

Screenshot serialisiert:

imggson

die JSONObject viele hat Subklassen mag:
PreferencialaboraEstudio, Preferencialaboralarea und mehr Klassen,

ich dieses Gson Objekt aus einer Tätigkeit auf eine neue Tätigkeit zu übertragen, in orde r dieses Objekt deserialisieren Ich habe den folgenden Code in der neuen Aktivität implementiert:

Intent intent = getIntent(); 
String Postulado = intent.getStringExtra("Postulado");//Postulado from extra is actually a gson object 

Candidato candidato = gson.fromJson(Postulado, Candidato.class); 
CandidatoPreferenciaLaboralEstado preflaboraledo = gson.fromJson(Postulado, CandidatoPreferenciaLaboralEstado.class); 

Ich habe das Problem in CandidatoPreferenciaLaboralEstado, wie man auf dem Bild sehen kann, gibt zwei Elemente dieses Typs Klasse im Gson Objekt sind, aber mein Code gibt nur das erste Element und nicht das zweite zurück, gibt es eine Möglichkeit, alle Artikel dieses Typs "CandidatoPreferenciaLaboralEstado" von der Gson zu bekommen?

Vielen Dank für Ihre Zeit und Unterstützung in dieser Angelegenheit.

+0

Von was ich verstehe, haben Sie zwei Objekte, die zufällig in "Postulado" sind. Ich würde nur zwei Strings verwenden, jede mit dem JSON für jedes der Objekte. Es wäre auch hilfreich, wenn Sie die Struktur des JSON in "Postulado" veröffentlichen könnten. –

+0

Ja Postulado ist das Objekt und es hat viele Eigenschaften/Attribute und einige von ihnen sind Listen, zum Beispiel CandidatoPreferenciaLaboralEstado, das Gson-Objekt hat zwei Elemente in diesem Attribut, also muss ich diese beiden Elemente vom Typ CandidatoPreferenciaLaboralEstado in einer Zeichenfolge oder Liste extrahieren um später diese Informationen in einer Textbox oder ListView hinzuzufügen. –

+0

Ich habe mit diesem auch versucht aber immernoch nur nur das erste Item =/List listaestados = new ArrayList (); listaestados.add (gson.fromJson (Postulado, CandidatoPreferenciaLaboralEstado.class)); –

Antwort

0

Nicht sicher, wie Ihr Root-Modell ist, aber man kann so etwas wie diese:

public class Postulado { 

    private CandidatoPreferenciaLaboralEstado candidatoPreferenciaLaboralEstado; 
    private CandidatoSoftware candidatoSoftware; 


    public class CandidatoPreferenciaLaboralEstado { 
     private List<CandidatoPrefAttributes> candidatoAttributesList; 


     public class CandidatoPrefAttributes { 
      private Integer cveCandidato; 
      private Integer cveCandidatoPreferenciaLaboralEstado; 
      //More 
     } 

    } 

    public class CandidatoSoftware { 
     private List<CandidatoSoftwareAttributes> candidatoAttributesList; 


     public class CandidatoSoftwareAttributes { 
      private Integer cveCandidato; 
      private Integer cveCandidatoSoftware; 
      //More 
     } 

    } 
} 

Mit entsprechenden Getter. sieht auch, dass die Cadidates (CandidatoPreferenciaLaboralEstado und CandidatoSoftware) und Cadidate Prefferences sehr ähnlich sind, vielleicht können Sie vereinen die Modelle zu einem (Kandidaten- und CadidatePrefferences) und wie mehrere seriliazed Namen verwenden:

@SerializedName(value="candidatoPreferenciaLaboralEstado", alternate={"candidatoSoftware"}) 

Hope this Sie helfen können !