如何将Visual Studio Web Essentials生成的类实例序列化为JSON
解决方案
你不需要修改Web Essentials生成的类,也不需要调整扩展配置,直接使用.NET生态的JSON序列化工具即可完成对象到JSON的转换。以下是两种常用实现方案:
方案1:使用内置System.Text.Json(适用于.NET Core 3.0+、.NET 5+版本)
.NET 3.0之后的版本内置了JSON处理库,无需额外安装依赖:
- 引入命名空间
using System.Text.Json; using System.IO;
- 序列化代码示例
// 填充你的业务数据 Rootobject root = new Rootobject(); root.project = new Project(); // 此处添加从数据库读取数据后给类属性赋值的逻辑 // 序列化为格式化JSON字符串 string jsonStr = JsonSerializer.Serialize(root, new JsonSerializerOptions { WriteIndented = true // 开启缩进格式化,去掉则生成压缩格式JSON }); // 写入到输出文件 File.WriteAllText("JSON file2的路径.json", jsonStr);
方案2:使用Newtonsoft.Json(Json.NET,适用于所有.NET版本,包括.NET Framework)
兼容性更强,老版本.NET项目优先选择:
- 安装依赖:右键项目 -> 管理NuGet包 -> 搜索
Newtonsoft.Json安装 - 引入命名空间
using Newtonsoft.Json; using System.IO;
- 序列化代码示例
Rootobject root = new Rootobject(); // 赋值数据逻辑同上 // 序列化为格式化JSON字符串 string jsonStr = JsonConvert.SerializeObject(root, Formatting.Indented); // 写入文件 File.WriteAllText("JSON file2的路径.json", jsonStr);
相关疑问说明
- 你生成的
Rootobject、Project等类是标准POCO(普通C#类),不需要继承任何基类或实现接口,上述两种序列化工具都原生支持这类类的序列化。 - 你调用
root.ToString()仅返回类名是C#的默认行为,ToString是所有C#类继承自object的基础方法,默认实现就是返回类的全限定名,和JSON序列化无关。 - VS2017之后「将JSON粘贴为类」已经集成为VS原生功能,你能正常使用该功能生成类就没有问题,不需要找Web Essentials的额外配置项。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

