You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从动态对象生成C#类代码以实现强类型反序列化

生成C#类替代Dynamic反序列化的实用方法

我刚好遇到过类似的需求,既想摆脱dynamic的类型模糊问题,又能获得代码高亮和类型安全,分享几个靠谱的方法给你:

1. Visual Studio内置的「JSON转类」功能(最省心)

如果你用的是Visual Studio,这绝对是最快的解决方案:

  • 第一步:复制你收到的完整JSON字符串
  • 第二步:在VS里新建一个空白的C#类文件
  • 第三步:点击顶部菜单的「编辑」→「选择性粘贴」→「将JSON粘贴为类」

VS会自动帮你生成对应的强类型类,包括嵌套的对象、数组结构,甚至会根据JSON值推断合适的C#类型(比如int、string、List<T>等)。生成后的类直接就能用:

// 假设生成的类叫GeneratedJsonModel
var oldschool = JsonConvert.DeserializeObject<GeneratedJsonModel>(rawJson);

这个方法的好处是零代码,自动处理复杂结构,还能保证类的结构和JSON完全匹配。

2. 用Newtonsoft.Json.Schema生成类(适合自定义场景)

如果需要更灵活的控制(比如调整命名规则、指定可空类型),可以用Newtonsoft的Schema工具包:

  • 首先,通过NuGet安装Newtonsoft.Json.Schema包
  • 然后,从你的dynamic对象生成JSON Schema,再用Schema生成C#类代码:
using Newtonsoft.Json;
using Newtonsoft.Json.Schema;
using Newtonsoft.Json.Schema.Generation;

// 先从dynamic生成Schema
var generator = new JSchemaGenerator();
JSchema schema = generator.Generate(dyn.GetType());

// 再从Schema生成C#类代码
var resolver = new CSharpResolver();
var generatorSettings = new CSharpGeneratorSettings
{
    ClassName = "GeneratedJsonModel",
    Namespace = "YourNamespace"
};
var codeGenerator = new CSharpGenerator(schema, resolver, generatorSettings);
string classCode = codeGenerator.GenerateFile();

// 你可以把classCode保存到文件,或者直接在项目中使用

这个方法适合需要批量生成类,或者对类的结构有自定义需求的场景,比如修改属性名的命名风格(驼峰转帕斯卡)。

3. 手动编写类(适合简单JSON结构)

如果你的JSON结构比较简单,手动写类反而更高效:

  • 先分析JSON的字段和嵌套结构
  • 对应编写C#类,注意属性名要和JSON字段匹配(或者用[JsonProperty]特性指定映射关系)

示例:
假设JSON是:

{
  "Id": 123,
  "Name": "Test",
  "Details": {
    "IsActive": true,
    "Tags": ["C#", "JSON"]
  }
}

对应的C#类:

public class GeneratedJsonModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DetailsModel Details { get; set; }
}

public class DetailsModel
{
    public bool IsActive { get; set; }
    public List<string> Tags { get; set; }
}

然后反序列化就可以用强类型了,代码高亮和智能提示都能正常工作。

不管用哪种方法,换成强类型后,不仅能获得代码编辑器的高亮和智能提示,还能在编译阶段发现类型错误,比用dynamic靠谱多了!

内容的提问来源于stack exchange,提问作者DuckQueen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:41:44