反序列化复杂的gson字符串

时间:2017-08-22 22:40:06

标签: android serialization gson deserialization

嗨,我希望有人可以帮助我,我在Android应用程序中工作,我已经序列化了以下gson对象

截图:

imggson

jsonobject有许多子类,如:
PreferencialaboraEstudio,Preferencialaboralarea等等,

我将此gson对象从活动转移到新活动,为了反序列化此对象,我在新活动中实现了以下代码:

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

我在CandidatoPreferenciaLaboralEstado中遇到了问题,你可以在图片中看到gson对象中有两个这个类型的项目,但是我的代码只返回第一个项而不是第二个项,是否有办法获取这个类型的所有项目来自gson的“CandidatoPreferenciaLaboralEstado”?

非常感谢您在这件事上的时间和帮助。

1 个答案:

答案 0 :(得分:0)

不确定你的根型号是怎样的,但你可以这样:

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
        }

    }
}

各自的吸气剂。 还看起来Cadidates(CandidatoPreferenciaLaboralEstado和CandidatoSoftware)和Cadidate Prefferences非常相似,也许你可以将这些模型统一到一个(Candidate和CadidatePrefferences)并使用多个seriliazed名称,如:

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

希望这可以帮到你!