Necesito ayuda para serializar una pieza de json.DataContractJsonSerializer lanza la excepción Esperando el estado 'Element' .. Encontrado 'Text' con el nombre '', namespace ''
Recibo una respuesta de un servicio de descanso, el servicio se está volviendo json. Después de eso, quiero asignar la solicitud a una clase. Estoy usando DataContractJsonSerializer, pero no puedo hacer que funcione.
cuando los datos se serializar la excepción siguiente:
"Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''. "
Aquí está el código:
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
Stream responseStreamm = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStreamm);
string streamAsString = reader.ReadToEnd();
MemoryStream memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(streamAsString)) {Position = 0};
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<MyClass>));
List<MyClass> myClass = (List<MyClass>)serializer.ReadObject(memoryStream);
Y aquí es el MiClase:
[DataContract]
public class MyClass
{
[DataMember]
public string RawData { get; set; }
[DataMember]
public string StudentIdentity { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string SchoolName { get; set; }
[DataMember]
public string SchoolCode { get; set; }
[DataMember]
public string TypeOfEducation { get; set; }
[DataMember]
public string EducationCode { get; set; }
[DataMember]
public string NationalProgram { get; set; }
[DataMember]
public string Objective { get; set; }
[DataMember]
public string IssuingDate { get; set; }
[DataMember]
public string GradeType { get; set; }
[DataMember]
public string ProgramRange { get; set; }
[DataMember]
public string HourTotal { get; set; }
[DataMember]
public string BasicEligibility { get; set; }
[DataMember]
public string OccupationCompetence { get; set; }
[DataMember]
public string CourseOfStudyFromSchool { get; set; }
[DataMember]
public string Software { get; set; }
[DataMember]
public string SoftwareProvider { get; set; }
[DataMember]
public string ProgramType { get; set; }
[DataMember]
public string Note { get; set; }
}
La respuesta de el servicio es:
"[{\"RawData\":\"\",\"StudentIdentity\":\"450101\",\"FirstName\":\"Kalle\",\"LastName\":\"Karlsson\",\"SchoolName\":\"\",\"SchoolCode\":\"SKL123\",\"TypeOfEducation\":\"\",\"EducationCode\":\"Code\",\"NationalProgram\":\"\",\"Objective\":\"Obj\",\"IssuingDate\":\"2012-01-28\",\"GradeType\":\"GradeType\",\"ProgramRange\":\"1\",\"HourTotal\":\"2000\",\"BasicEligibility\":\"BE\",\"OccupationCompetence\":\"OC\",\"CourseOfStudyFromSchool\":\"Y\",\"Software\":\"HAL213\",\"SoftwareProvider\":\"SchoolSoft\",\"ProgramType\":\"C\",\"Note\":\"Notering\",\"CourseInformation\":[{\"CourseCode\":\"ABC555\",\"Grade\":\"VG\",\"GradeDate\":\"2012-01-28\",\"Points\":\"50\",\"Comment1\":\"Kommentar1\",\"Comment2\":\"\",\"Comment3\":\"\",\"AddtionalInformation\":\"Info\",\"Exceptions\":null},{\"CourseCode\":\"DFG333\",\"Grade\":\"G\",\"GradeDate\":\"2012-01-28\",\"Points\":\"60\",\"Comment1\":\"\",\"Comment2\":\"\",\"Comment3\":\"\",\"AddtionalInformation\":\"\",\"Exceptions\":null}],\"Exceptions\":[]}]"
Ayuda es muy apreciada!
Editar:
estoy complementando con el código de servicio:
List<MyClass> myClass = validationManager.GetXmlAsAListOfEducationInformationObject();
JavaScriptSerializerserializer = new JavaScriptSerializer();
string jsonData = serializer.Serialize(myClass);
return jsonData;
¿Puede publicar más contexto circundante para el código de servicio? Sospecho que la capa adicional de codificación es de la capa de servicio envolviendo su cadena en una cadena JSON. Probablemente desee que su función de servicio devuelva el tipo 'List', no 'string', y puede hacer la serialización JSON automáticamente. Depende de lo que estés usando para el servicio. –