首页 > 解决方案 > 如何序列化 Json 文件中的 T 类型

问题描述

我想将模型的信息保存在 Json 文件中我想以一种可以轻松存储不同模型的方式实现它所以我使用了这种方法:

 public abstract class SettingBase
    {
        [JsonIgnore]
        public abstract string Filename { get; }
    
        public static T Load<T>() where T : SettingBase, new()
        {
            T result = new T();
            result = JsonFile.Load<T>(result.Filename) ?? result;    
            return result;
        }

        public void Save()
        {
            JsonFile.Save(Filename, this);
        }
    }

json文件:

public static class JsonFile
    {

        public static void Save<T>(string fileName, T @object)
        {
            
            using (StreamWriter writer = File.CreateText(fileName))
            {
                string json = JsonSerializer.Serialize(@object);
                writer.Write(json);
            }
        }

        public static T Load<T>(string fileName)
        {
            using (StreamReader reader = File.OpenText(fileName))
            {
                string json = reader.ReadToEnd();
                return JsonSerializer.Deserialize<T>(json);
            }
            return default(T);
        }
    }

现在我可以这样使用:

 var xx = SettingBase.Load<AppModel>();
  xx.boo = true;
  xx.integ = 25;
  xx.str = "sss";
  xx.Save();

问题是没有执行save操作,json文件中什么也没有保存这个问题怎么解决?

标签: c#jsongenericsserialization

解决方案


不幸的是,.NET Core 目前不支持此功能 .Net 6.0 可能支持您必须使用 newtonsoft.json


推荐阅读