c# - 如何序列化 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文件中什么也没有保存这个问题怎么解决?
解决方案
不幸的是,.NET Core 目前不支持此功能 .Net 6.0 可能支持您必须使用 newtonsoft.json
推荐阅读
- angularjs - ui-bootstrap 将点击值发送到另一个控制器
- c# - Mongo查询限制未在操作中显示
- javascript - 找不到 FFMPEG(我无法安装)
- heroku - Heroku 上的 ClearDB 在运行迁移以创建具有 `json` 类型的 `details` 字段的新表时引发错误
- laravel - 如何在 Laravel 中将图像存储在两个不同的文件夹中
- ios - 复选标记未显示在表格单元格中
- python - 安装 python httpclient 时遇到错误
- python-3.x - 如何使用 sqlalchemy 插入选择字段?
- javascript - 如何在我的 chrome 扩展程序和我的 Node 服务器之间启用跨域 AJAX 请求?
- excel - 根据范围内的唯一值在多个工作簿中拆分工作表