C# 如何将Json数组反序列化为不同的对象?

C# 如何将Json数组反序列化为不同的对象?,c#,asp.net,json,json.net,C#,Asp.net,Json,Json.net,我试图使用json.net将一个json字符串反序列化到C#上的一个新列表中 当我进行直接反序列化时,我得到一些属性为null,因为我的列表中有不同的对象 因此,我想为该任务创建一个“转换器”,构建通用对象并设置对象的属性 这是我的进步 CitasProfesorWeb.JavaService.AgendaWSService service = new JavaService.AgendaWSService(); JsonTextReader reader; private void

我试图使用json.net将一个json字符串反序列化到C#上的一个新列表中

当我进行直接反序列化时,我得到一些属性为null,因为我的列表中有不同的对象

因此,我想为该任务创建一个“转换器”,构建通用对象并设置对象的属性

这是我的进步

CitasProfesorWeb.JavaService.AgendaWSService service =
    new JavaService.AgendaWSService();
JsonTextReader reader;

private void cargaDatos()
{
    String lista = service.obtenerCitasNuevas(2);
    reader = new JsonTextReader(new StringReader(lista));

    while (reader.Read())
    {
        //here i want to read the attributes or objects
    }
}
我尝试过使用JsonConvert.PopulateObject(reader,cita),但收到一条错误消息,说我的参数无效

--编辑--

这是我收到的字符串:

[{"idCita":6,"fechaSolicitud":"2012/4/20","fechaCita":"2012/4/19","horario":{"idHorario":1,"fechaInicio":"2012/1/16","fechaHoy":1337281297199,"fechaFin":"2012/5/30","nombre":"Enero-Mayo 2012","profesor":{"idProfesor":2, "nombre":"Guillermo", "apellido":"Salazar", "nomUsuario":"g.salazar", "email":"g.salazar@itson.mx", "ubicacion":"LV323", "descripcion":"Profesor Interino"}},"alumno":{"idAlumno":1, "nombre":"Jhonatan", "apellido":"Romero", "nomUsuario":" jromero", "email":"jhonatanromgggggh", "carrera":"LSIA" },"asunto":"asesorias","status":"0","horaCita":"10:0"}, {"idCita":7,"fechaSolicitud":"2012/4/20","fechaCita":"2012/4/27","horario":{"idHorario":1,"fechaInicio":"2012/1/16","fechaHoy":1337281297199,"fechaFin":"2012/5/30","nombre":"Enero-Mayo 2012","profesor":{"idProfesor":2, "nombre":"Guillermo", "apellido":"Salazar", "nomUsuario":"g.salazar", "email":"g.salazar@itson.mx", "ubicacion":"LV323", "descripcion":"Profesor Interino"}},"alumno":{"idAlumno":1, "nombre":"Jhonatan", "apellido":"Romero", "nomUsuario":" jromero", "email":"jhonatanromgggggh", "carrera":"LSIA" },"asunto":"asesorias","status":"0","horaCita":"11:0"}, {"idCita":11,"fechaSolicitud":"2012/4/20","fechaCita":"2012/4/20","horario":{"idHorario":1,"fechaInicio":"2012/1/16","fechaHoy":1337281297199,"fechaFin":"2012/5/30","nombre":"Enero-Mayo 2012","profesor":{"idProfesor":2, "nombre":"Guillermo", "apellido":"Salazar", "nomUsuario":"g.salazar", "email":"g.salazar@itson.mx", "ubicacion":"LV323", "descripcion":"Profesor Interino"}},"alumno":{"idAlumno":1, "nombre":"Jhonatan", "apellido":"Romero", "nomUsuario":" jromero", "email":"jhonatanromgggggh", "carrera":"LSIA" },"asunto":"asesorias","status":"0","horaCita":"17:0"}, {"idCita":12,"fechaSolicitud":"2012/4/27","fechaCita":"2012/5/3","horario":{"idHorario":1,"fechaInicio":"2012/1/16","fechaHoy":1337281297199,"fechaFin":"2012/5/30","nombre":"Enero-Mayo 2012","profesor":{"idProfesor":2, "nombre":"Guillermo", "apellido":"Salazar", "nomUsuario":"g.salazar", "email":"g.salazar@itson.mx", "ubicacion":"LV323", "descripcion":"Profesor Interino"}},"alumno":{"idAlumno":1, "nombre":"Jhonatan", "apellido":"Romero", "nomUsuario":" jromero", "email":"jhonatanromgggggh", "carrera":"LSIA" },"asunto":"tesis","status":"0","horaCita":"12:0"}, {"idCita":15,"fechaSolicitud":"2012/5/11","fechaCita":"2012/4/20","horario":{"idHorario":1,"fechaInicio":"2012/1/16","fechaHoy":1337281297200,"fechaFin":"2012/5/30","nombre":"Enero-Mayo 2012","profesor":{"idProfesor":2, "nombre":"Guillermo", "apellido":"Salazar", "nomUsuario":"g.salazar", "email":"g.salazar@itson.mx", "ubicacion":"LV323", "descripcion":"Profesor Interino"}},"alumno":{"idAlumno":1, "nombre":"Jhonatan", "apellido":"Romero", "nomUsuario":" jromero", "email":"jhonatanromgggggh", "carrera":"LSIA" },"asunto":"Tesis","status":"0","horaCita":"10:0"}]
这是我的班级:

public class Cita
    {
        Profesor profesor;

        public Profesor Profesor
        {
            get { return profesor; }
            set { profesor = value; }
        }

        Alumno alumno;

        public Alumno Alumno
        {
            get { return alumno; }
            set { alumno = value; }
        }

        DateTime inicioCita;

        public DateTime InicioCita
        {
            get { return inicioCita; }
            set { inicioCita = value; }
        }

        String asunto;

        public String Asunto
        {
            get { return asunto; }
            set { asunto = value; }
        }

        String lugar;

        public String Lugar
        {
            get { return lugar; }
            set { lugar = value; }
        }

        int status;

        public int Status
        {
            get { return status; }
            set { status = value; }
        }

        DateTime fechaSolicitud;

        public DateTime FechaSolicitud
        {
            get { return fechaSolicitud; }
            set { fechaSolicitud = value; }
        }


    }

我将使用
dynamic
解析json字符串,如下所示(无需声明
cita
horario
profesor
alumno
类)


我将使用
dynamic
解析json字符串,如下所示(无需声明
cita
horario
profesor
alumno
类)


下面是一个将JSON转换为对象的通用类(请确保包含
System.Web.Script.Serialization

publicstatictJSONTObject(字符串JsonData)
{
//将JSON反序列化到对象中
JavaScriptSerializer jss=新的JavaScriptSerializer();
T rf=(T)jss.反序列化(JsonData,typeof(T));
返回射频;
}
要将对象转换回JSON,请使用此通用类

    public static string ObjectToJson<T>(T rf)
    {
        // Serialize the object as JSON
        StringBuilder sb = new StringBuilder();
        JavaScriptSerializer jss = new JavaScriptSerializer();
        jss.Serialize(rf, sb);

        return sb.ToString();
    }
publicstaticstringobjecttojson(trf)
{
//将对象序列化为JSON
StringBuilder sb=新的StringBuilder();
JavaScriptSerializer jss=新的JavaScriptSerializer();
jss.序列化(rf、sb);
使某人返回字符串();
}
作为用法示例,您可以使用

        string json = @"[{""idCita"":6,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/19"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""10:0""}, {""idCita"":7,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/27"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""11:0""}, {""idCita"":11,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/20"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""17:0""}, {""idCita"":12,""fechaSolicitud"":""2012/4/27"",""fechaCita"":""2012/5/3"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""tesis"",""status"":""0"",""horaCita"":""12:0""}, {""idCita"":15,""fechaSolicitud"":""2012/5/11"",""fechaCita"":""2012/4/20"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297200,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""Tesis"",""status"":""0"",""horaCita"":""10:0""}]";
        List<Cita> p = JsonToObject<List<Cita>>(json);
string json=@“[{”“idCita”“:6”“fechaSolicitud”“:”“2012/4/20”“fechaCita”“:”“2012/4/19”“horario”“:{”“idHorario”“:1”“fechaInicio”“:”“2012/1/16”“fechaHoy”“:1337281297199”“fechaFin”“:”“2012/5/30”“nombre”“:”“Enero Mayo 2012”“professor”“,”“professor”“:”“Idrofesor”“:2”“nombre”“:”“Guillo”“Salazar”“,”“Nomario”“:”“Nomario”“,”“Nomario”“:”“Guillo”“,”“Salazar”“,”“Nomario”“:”“Nomario”“:”“Nomario”““g.salazar”“电子邮件”:“g。salazar@itson.mx“,”ubicacion“:”LV323“,”description“:”Profesor Interino“}}}”,“alumno“:”idAlumno“:1“,”nombre“:”Jhonatan“,”apellido“:”Romero“,”Nomusario“:”jromero“,”email“:”Jhonatanlomgggh“,”carrera“:”LSIA“}”,“asunto“:”asesorias“,”状态“:”0“,”horaCita“:”10:0“,{”“idCita”“Idchasolicitud”“2012/4/20”“fechaCita”“2012/4/27”“horario”“idHorario”“1”“fechaInicio”“2012/1/16”“fechaHoy”“1337281297199”“Fecin”“2012/5/30”“nombre”“:”“Enero Mayo 2012”“Hafsor”“Idrofesor”“:2”“nombre”“Guillermo”“apellido”“:”“Salazar”“Nomario”“:”“电子邮件”“Usuzaria:”“g.Salazar”“。”Gsalazar@itson.mx“,”ubicacion“:”LV323“,”description“:”Profesor Interino“}}}”,“alumno“:”idAlumno“:1“,”nombre“:”Jhonatan“,”apellido“:”Romero“,”Nomusario“:”jromero“,”email“:”Jhonatanlomgggh“,”carrera“:”LSIA“,”asunto“:”ASESOSORIAS“,”状态“:”0“,”horaCita“:”11:0“,”fechaSolicitud“,”11:2012年4月20日,费沙基塔,2012年4月20日,霍拉里奥,霍拉里奥,2012年1月16日,费沙伊奥,1337281297199,费沙芬,2012年5月30日,诺姆布雷,埃尼诺梅奥,教授,吉列尔莫,阿佩利多,萨拉扎,诺姆萨里奥,g萨拉扎,电子邮件,g。salazar@itson.mx“,”泛指“:“路易斯安那州”、“阿佩利多州”、“罗梅罗州”、“诺穆萨里奥州”、“罗马州”、“电子邮件州”、“卡雷拉州”、“卡雷拉州”、“LSIA州”、“asunto州”、“asesorias州”、“州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州州“2012/5/3”“horario”“:{”“idHorario”“:1”“fechaInicio”“:”“2012/1/16”“fechaHoy”“:1337281297199”“fechaFin”“:”“2012/5/30”“nombre”“:”“Enero Mayo 2012”“profesor”“:{”“Idrofesor”“:2”“nombre”“:”“Guillermo”“apellido”“:”“Salazar”“Nomusario”“:”“g.Salazar”“email”“:”“g。salazar@itson.mx“,”ubicacion“:”LV323“,”Description“:”“校友”:{“idAlumno”:1,“nombre”:“Jhonatan”;“apellido”:“Romero”;“Nomusario”:“jromero”;“email”:“JhonatanRomggh”;“carrera”:“LSIA”},“asunto”:“tesis”;“status”:“0”;“horaCita”:“12:0”;“idCita”;“Idcata”;“15”、“fechaSolicitud”:“2012/5/11”、“fechaCita:“2012/4/20”、“Idchario”;“Idcata”;“Idcata”;“Idcata”;“Idcata”;“Idcata”;“Idcata”:1、“费查尼西奥”:“2012/1/16”、“费查霍伊”:“1337281297200”、“费查芬”:“2012/5/30”、“诺姆布雷”:“埃尼诺·梅奥2012”、“教授”:“{”Idrofesor“:2”、“诺姆布雷”:“吉勒莫”、“阿佩利多”:“萨拉扎”、“诺姆萨里奥”:“g.萨拉扎”、“电子邮件”:“g。salazar@itson.mx“,”ubicacion“:”LV323“,”Description“:”Interino教授“}}}”,“校友“:{”idAlumno”“:1”“nombre”“:”“Jhonatan”“,”“apellido”“:”“Romero”“,”“Nomusario”“:”“jromero”“,”“email”“:”“JhonatanRomggggh”“,”“carrera”“:”“LSIA”“,”“asunto”“:”“Tesis”“,”“status”“:”“0”“,”“horaCita”“:”“10:0”“,”;
列表p=JsonToObject(json);

编辑:您特别提到了JSON.NET,因此如果您想继续使用,上述代码可能对您没有帮助。但是,要解析JSON字符串的所有属性,您需要一个与JSON响应字符串匹配的类。从中,您可以根据需要设置其他对象的属性。

这里是一个用于转换的通用类将JSON绑定到对象(确保包含
System.Web.Script.Serialization

publicstatictJSONTObject(字符串JsonData)
{
//将JSON反序列化到对象中
JavaScriptSerializer jss=新的JavaScriptSerializer();
T rf=(T)jss.反序列化(JsonData,typeof(T));
返回射频;
}
要将对象转换回JSON,请使用此通用类

    public static string ObjectToJson<T>(T rf)
    {
        // Serialize the object as JSON
        StringBuilder sb = new StringBuilder();
        JavaScriptSerializer jss = new JavaScriptSerializer();
        jss.Serialize(rf, sb);

        return sb.ToString();
    }
publicstaticstringobjecttojson(trf
        string json = @"[{""idCita"":6,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/19"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""10:0""}, {""idCita"":7,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/27"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""11:0""}, {""idCita"":11,""fechaSolicitud"":""2012/4/20"",""fechaCita"":""2012/4/20"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""asesorias"",""status"":""0"",""horaCita"":""17:0""}, {""idCita"":12,""fechaSolicitud"":""2012/4/27"",""fechaCita"":""2012/5/3"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297199,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""tesis"",""status"":""0"",""horaCita"":""12:0""}, {""idCita"":15,""fechaSolicitud"":""2012/5/11"",""fechaCita"":""2012/4/20"",""horario"":{""idHorario"":1,""fechaInicio"":""2012/1/16"",""fechaHoy"":1337281297200,""fechaFin"":""2012/5/30"",""nombre"":""Enero-Mayo 2012"",""profesor"":{""idProfesor"":2, ""nombre"":""Guillermo"", ""apellido"":""Salazar"", ""nomUsuario"":""g.salazar"", ""email"":""g.salazar@itson.mx"", ""ubicacion"":""LV323"", ""descripcion"":""Profesor Interino""}},""alumno"":{""idAlumno"":1, ""nombre"":""Jhonatan"", ""apellido"":""Romero"", ""nomUsuario"":"" jromero"", ""email"":""jhonatanromgggggh"", ""carrera"":""LSIA"" },""asunto"":""Tesis"",""status"":""0"",""horaCita"":""10:0""}]";
        List<Cita> p = JsonToObject<List<Cita>>(json);