我一直在尝试将 JSON 对象反序列化为 C# 类。我的 JSON Objetc(当我从 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"
}
}
}
如果我有这个类,这个反序列化是正确的:
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; }
}
但我想使用这个类:
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;
}
可悲的是,如果我使用最后一个代码,字典每个(字符串键)月(listadoMeses 的每次迭代)都有一个项目,但是 Mes 类的每个实例都具有两个属性 空。
最后一节课怎么办?
我用来反序列化的代码如下(但我想这些信息是无用的,因为在两种情况下都是相同的):
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);
最佳答案
Mes 类上的属性是私有(private)的。将 public 访问修饰符添加到属性。
改成这样:
public class Mes
{
public string valor;
public string almacenado;
}
关于c# - 如何反序列化此 JSON 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40533428/