I am trying to destroy a JSON object for a C # class. My JSON Objetc (when I read it from Request.InputStream):
{
"accion":"Guardar",
"ejercicio":"2017",
"codigoPieza":"13",
"solicitado":"61",
"solicitante":"46",
"listadoMeses":{
"Enero":{
"valor":"1",
"almacenado":"false"
},
"Febrero":{
"valor":"",
"almacenado":"true"
},
"Mayo":{
"valor":"2",
"almacenado":"true"
},
"Agosto":{
"valor":"2",
"almacenado":"true"
},
"Noviembre":{
"valor":"2",
"almacenado":"true"
}
}
}
This deserializes correctly if I have this class:
public class RespuestaUsuario
{
public string accion { get; set; }
public string ejercicio { get; set; }
public string codigoPieza { get; set; }
public string solicitado { get; set; }
public string solicitante { get; set; }
public Dictionary<string, Dictionary<string, string>> listadoMeses { get; set; }
}
But I want to use these classes:
public class RespuestaUsuario
{
public string accion { get; set; }
public string ejercicio { get; set; }
public string codigoPieza { get; set; }
public string solicitado { get; set; }
public string solicitante { get; set; }
public Dictionary<string, Mes> listadoMeses { get; set; }
}
public class Mes
{
string valor;
string almacenado;
}
Unfortunately, if I use the latest code, the dictionary has one element for each (string) month (each iteration of listadoMeses), but each instance of the Mes class has both NULL properties .
How do I do with the last classes?
The code I use for Deserialize is as follows (but this information, I suppose, is useless because it is the same in both cases):
System.IO.Stream str = Request.InputStream;
str.Position = 0;
string datos = String.Empty;
using (StreamReader reader = new StreamReader(str, Encoding.UTF8))
{
datos = reader.ReadToEnd();
}
JavaScriptSerializer serializador = new JavaScriptSerializer();
RespuestaUsuario respuesta = (RespuestaUsuario)serializador.Deserialize<RespuestaUsuario>(datos);