JsonSerializer c#尝试反序列化对象时返回空结构

JsonSerializer c#尝试反序列化对象时返回空结构,c#,json,variables,serialization,struct,C#,Json,Variables,Serialization,Struct,早上好 我有两个结构: struct SingoloParametroFiltro { public Variabile variabile { get; set; } public string operatore { get; set; } public bool non { get; set; } public object valore { get; set; } public static

早上好

我有两个结构:

    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;
        }
    }
现在。。。。我序列化
列表
并将其保存在数据库中。json字符串看起来很好,而且一切正常。 当我尝试将json字符串从DB反序列化到
List
时,除了SingoloParameterFiltro中的Variable之外,所有的工作都很好。 SingoloParameterFiltro中的结构variable将所有变量设置为null或0

要序列化的代码:

JavaScriptSerializer jsSer = new JavaScriptSerializer();
string json = jsSer.Serialize(parametri);
其中parametri是一个
列表

要反序列化的代码:

JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<List<SingoloParametroFiltro>>(json);
JavaScriptSerializer js=新的JavaScriptSerializer();
返回js.Deserialize(json);

有人能帮我吗?

这是因为结构
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; }
...

你能把
变量的定义张贴出来吗?
...
public int id { get; set; }
...