[英]JsonSerializer c# return null struct when try to deserialize an object
早上好,
我有兩個結構:
struct SingoloParametroFiltro
{
public Variabile variabile { get; set; }
public string operatore { get; set; }
public bool non { get; set; }
public object valore { get; set; }
public static SingoloParametroFiltro CreaSingoloParametroFiltro(int idVariabile, string Operatore, bool Non, object Valore)
{
SingoloParametroFiltro s = new SingoloParametroFiltro();
s.variabile = Variabile.CreaVariabileDaId(idVariabile);
s.operatore = Operatore;
s.non = Non;
s.valore = Valore;
return s;
}
}
struct Filtro
{
public List<SingoloParametroFiltro> parametroFiltro { get; set; }
public string nomeFiltro { get; set; }
public static Filtro CreaFiltro(List<SingoloParametroFiltro> _parFiltro, string _nome)
{
Filtro f = new Filtro();
f.parametroFiltro = _parFiltro;
f.nomeFiltro = _nome;
return f;
}
}
和Variabile的結構:
struct Variabile
{
public int id { get; private set; }
public string NomeColonna { get; private set; }
public string TipoDato { get; private set; }
public object Val { get; private set; }
public object Default { get; private set; }
public int ColonnaAccoppiamento { get; private set; }
public bool Visibile { get; private set; }
public bool ChiaveAlbero { get; private set; }
public int Importanza { get; private set; }
public bool ChiaveImport { get; private set; }
}
現在....我序列化List<SingoloParametroFiltro>
並將其保存在DB上。 json字符串似乎沒問題,一切正常。 當我嘗試將json字符串從DB反序列List<SingoloParametroFiltro>
除了SingoloParametroFiltro中的Variabile之外,所有工作都很棒。 SingoloParametroFiltro中的struct Variabile將所有變量設置為null或0 .....
要序列化的代碼:
JavaScriptSerializer jsSer = new JavaScriptSerializer();
string json = jsSer.Serialize(parametri);
其中parametri是List<SingoloParametroFiltro>
反序列化代碼:
JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<List<SingoloParametroFiltro>>(json);
有人可以幫幫我嗎?
這是因為struct Variabile
所有setter都是private
。
...
public int id { get; private set; }
public string NomeColonna { get; private set; }
public string TipoDato { get; private set; }
...
因此,反序列化器無法為字段分配正確的值。 您可以嘗試將其公開:
...
public int id { get; set; }
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.