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

如何在Visual Studio 2022中从JSON生成C# Record Type类?

离线生成JSON对应的C# Record Type方案

方案一:自定义Visual Studio选择性粘贴模板

Visual Studio自带的「选择性粘贴」生成类的模板可以修改,改成直接输出record类型:

  • 找到VS代码模板目录,VS2022的路径一般是%USERPROFILE%\Documents\Visual Studio 2022\Code Templates\CSharp\Code\1033(其他版本路径类似,按需调整)
  • 找到「Paste JSON as Classes」相关的模板文件,打开后把所有class关键字替换成record,同时把类内的自动属性调整成record的简洁写法(比如把public string Name { get; set; }改成构造器参数形式)
  • 保存模板后重启Visual Studio,再用选择性粘贴功能就能直接生成record类型了

方案二:自己写个轻量代码生成工具

用C#写个简单的控制台程序,离线处理JSON生成record:

  • 用System.Text.Json或Newtonsoft.Json解析JSON结构,遍历节点获取属性名和类型
  • 拼接C#代码字符串,按照record语法生成代码,示例如下:
    // 生成的嵌套record示例
    public record Product(
        int Id,
        string Name,
        decimal Price,
        Category ProductCategory
    );
    
    public record Category(
        int Id,
        string CategoryName
    );
    
  • 这种方式完全离线,还能自定义规则,比如给属性加上[JsonPropertyName]特性、处理可空类型等

方案三:使用dotnet CLI离线工具

可以用现成的dotnet CLI工具,或者自己封装一个:

  • 安装工具后,直接在命令行传入JSON文件路径,就能生成对应的record代码
  • 核心逻辑是解析JSON Schema,然后按照record的语法输出代码,全程离线运行

方案四:快速将现有类转为record

如果已经用VS生成了普通类,快速转成record的小技巧:

  • 把class关键字替换成record
  • 将类内的自动属性移到record的构造器参数中(这是record的简洁写法),比如:
    原类:
    public class Order
    {
        public string OrderNumber { get; set; }
        public DateTime OrderDate { get; set; }
    }
    
    转成record:
    public record Order(string OrderNumber, DateTime OrderDate);
    
  • 如果需要保留属性的init访问器或者特性,也可以写成扩展形式:
    public record Order
    {
        [JsonPropertyName("order_num")]
        public string OrderNumber { get; init; }
        public DateTime OrderDate { get; init; }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:36:33