c# - C# JSON 反序列化为局部变量
问题描述
我有这样的事情:
public class MyClass_T
{
public string filename;
public string filename_txt;
public int version = 1;
public double A;
public double B;
....and so on with about 100 more variables
}
我已将数据写入 JSON 格式的文件
public bool readFormatFile(string filename)
{
JsonSerializer serializer = new JsonSerializer();
serializer.NullValueHandling = NullValueHandling.Ignore;
using (FileStream fs = new FileStream(filename, FileMode.Create, System.IO.FileAccess.Write, FileShare.Read))
{
using (StreamWriter sw = new StreamWriter(fs))
{
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer, this);
}
}
}
}
现在我想反序列化它。我知道我可以这样做:
public bool writeFormatFile(string filename)
{
MyClass_T MC = new MyClass_T();
using (FileStream fs = new FileStream(filename, FileMode.Open, System.IO.FileAccess.Read, FileShare.Read))
{
using (StreamReader sr = new StreamReader(fs))
{
JsonSerializer serializer = new JsonSerializer();
serializer.NullValueHandling = NullValueHandling.Ignore;
serializer.MissingMemberHandling = MissingMemberHandling.Ignore;
MC = (MyClass_T)serializer.Deserialize(sr, typeof(MyClass_T));
}
}
}
请注意,readFormatFile 和 writeFormatFile 是 MyClass_T 的一部分。我需要将值返回到我的局部变量中,而不必做一堆
filename = MC.filename;
filename_txt = MC.filename_txt;
version = MC.version;
A = MC.A;
B = MC.B;
...and so on for the 100 or so variables.
关于如何进行此操作的想法和想法?
解决方案
就像很多人已经明确的那样,将 JSON 对象反序列化为局部变量并不是一个好主意,但是如果您不能为对象创建类,则可以使用dynamic
object 类型,这将允许您反序列化 JSON到对象中,同时无需添加任何强类型模型/类。
您需要做的就是将反序列化的结果转换为 a dynamic
,就像您将任何其他对象一样,例如
dynamic myObject = (dynamic)serializer.Deserialize(sr, typeof(dynamic));
这将允许您myObject
像访问任何其他对象一样访问,例如
myObject.filename
例如。
我还想重申一下,您确实应该为此使用一个类,因为它使代码总体上更具可预测性、可维护性和清洁性
推荐阅读
- c++ - void bool 工具 C++
- node.js - ReferenceError:未定义加载程序
- c# - 用户委托的 SAS 令牌
- typescript - TypeORM OneToMany 导致“ReferenceError:无法访问”
'在初始化之前" - java - 当 Java 应用程序被 Dockerized 时,串行端口访问失败
- windows - 操作系统如何表示 Windows 命令行?
- javascript - 如何捕获我单击的项目,以便将其传递给 API - VueJS 和 Quasar
- json - 使用 ${params} 将所有参数 jenkins 写入 JSON 文件
- python - 从两个单独的数组创建图像
- reactjs - 我不确定为什么 Office Fabric UI React 布局类不起作用