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

如何为单个模型修改OpenAPI TypeScript代码生成的命名格式?

实现单个模型保留PascalCase其余转camelCase的方案

针对你的需求,有几种实用的实现方式,根据场景选择即可:

1. 直接为目标模型属性指定JsonPropertyName特性

这是最直接的方式,给需要保留PascalCase的模型属性添加[JsonPropertyName]特性,显式指定JSON字段名:

public class SpecialJsonModel
{
    [JsonPropertyName("FirstName")]
    public string FirstName { get; set; }

    [JsonPropertyName("LastName")]
    public string LastName { get; set; }

    // 其他属性同理
}

全局配置保持JsonNamingPolicy.CamelCase不变,序列化/反序列化时该模型会优先使用特性指定的PascalCase名称,其余模型正常转为camelCase。

2. 为特殊模型单独配置序列化选项

如果不想给每个属性加特性,可以在处理该模型的序列化/反序列化操作时,使用独立的配置:

// 全局默认配置(应用于大部分模型)
var globalJsonOptions = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};

// 针对特殊模型的配置:保留原属性名称(PascalCase)
var specialJsonOptions = new JsonSerializerOptions
{
    PropertyNamingPolicy = null // 不启用任何命名转换
};

// 反序列化特殊模型时使用单独配置
var specialModel = JsonSerializer.Deserialize<SpecialJsonModel>(jsonContent, specialJsonOptions);

// 序列化时同理
var serializedSpecialModel = JsonSerializer.Serialize(specialModel, specialJsonOptions);

3. 配置Swagger文档显示PascalCase(如果需要)

如果你的项目用Swashbuckle生成Swagger文档,要让该模型在文档中显示PascalCase,可自定义Schema过滤器:

第一步:实现ISchemaFilter

public class SpecialModelSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        // 只处理目标模型
        if (context.Type != typeof(SpecialJsonModel)) return;

        var updatedProperties = new Dictionary<string, OpenApiSchema>();
        foreach (var prop in schema.Properties)
        {
            // 将camelCase转回PascalCase
            var pascalCaseName = char.ToUpperInvariant(prop.Key[0]) + prop.Key.Substring(1);
            updatedProperties.Add(pascalCaseName, prop.Value);
        }

        schema.Properties.Clear();
        foreach (var prop in updatedProperties)
        {
            schema.Properties.Add(prop.Key, prop.Value);
        }
    }
}

第二步:注册过滤器

在Program.cs(或Startup.cs)中添加Swagger配置时注册该过滤器:

builder.Services.AddSwaggerGen(options =>
{
    options.SchemaFilter<SpecialModelSchemaFilter>();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:11:11