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

标签 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 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;
        }
    }

以及变量的结构:

    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>并将其保存在数据库中。 json 字符串似乎没问题,一切正常。 当我尝试将 json 字符串从数据库反序列化为 List<SingoloParametroFiltro>除了 SingoloParametroFiltro 中的 Variabile 之外,一切都很好。 SingoloParametroFiltro 中的结构变量将所有变量设置为 null 或 0.....

要序列化的代码:

JavaScriptSerializer jsSer = new JavaScriptSerializer();
string json = jsSer.Serialize(parametri);

其中参数是 List<SingoloParametroFiltro>

反序列化代码:

JavaScriptSerializer js = new JavaScriptSerializer();
return js.Deserialize<List<SingoloParametroFiltro>>(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; }
...

关于c# - JsonSerializer c# 在尝试反序列化对象时返回空结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153027/

相关文章:

c# - 使用 File.Copy 移动文件或将流写入该位置有什么区别吗?

.net - WebMethod 响应格式

sql - 选择嵌套 JSON 数组包含特定值的行

java - 参数范围与局部变量范围?

c# - List<T> C# 中的 WPF datagrid 过滤器数据绑定(bind) List<T1>

c# - 首次调用 C# Web 服务时速度较慢

Javascript:隐藏/使客户端对象难以理解

java - 通过Java中的方法传递变量

arrays - 从 array1 读取 从 array2 写入

C#泛型接口(interface)和继承