我一直在嘗試將C#類的JSON對象淡化。我的JSON Objetc(當我從Request.InputStream閱讀)如下:如何反序列化這個JSON字符串?
{
"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類有兩個屬性NULL。
我如何處理最後幾堂課?
我用反序列化的代碼如下(但這些信息,我想,是沒用的,因爲在這兩種情況下是相同的):
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類的訪問修飾符已經是** public ** – Neoff
否。OP代碼不包含'Mes'類中字段的訪問修飾符。默認情況下,在沒有訪問修飾符的類上聲明的字段將被解釋爲私有。 https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx – thepirat000
但是代碼從開始就有公共修飾符。在下面的鏈接,你可以看到如何從開始類Mes具有PUBLIC修飾符訪問: \t [stackoverflow.com/posts/40533428/revisions](http://stackoverflow.com/posts/40533428/revisions) – Neoff