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

ASP.NET Core中使用元组作为Action返回类型时保留字段名

如何让Action返回的元组在JSON中使用自定义字段名?

可以实现,核心是使用C#命名元组并配置JSON序列化器以保留元组的自定义字段名,以下是具体方案:

关键前提

确保代码使用C# 7.0及以上版本,且控制器方法返回的是命名元组(即定义时指定字段名,如(Customer customer, string state)),而非无名称的普通元组。

针对ASP.NET Core默认序列化器(System.Text.Json)的配置

默认情况下,System.Text.Json仅序列化类的属性,而命名元组的元素是公共字段,因此需要开启字段序列化选项:

.NET 6+(Program.cs)

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 开启字段序列化,保留命名元组的自定义名称
        options.JsonSerializerOptions.IncludeFields = true;
    });

.NET Core 3.x - 5.x(Startup.cs)

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.IncludeFields = true;
        });
}

配置完成后,Action返回的命名元组会被序列化为带有自定义字段名的JSON,示例如下:

{
  "customer": {
    "Name": "Alice",
    "Email": "alice@example.com"
  },
  "moneySpent": 456.78
}

针对Newtonsoft.Json(Json.NET)的配置

如果项目使用Newtonsoft.Json作为序列化器(常用于兼容旧项目或需要更多序列化特性),默认就支持命名元组的自定义字段名,只需完成以下步骤:

  1. 安装NuGet包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
  2. 在配置中启用:

.NET 6+(Program.cs)

builder.Services.AddControllers()
    .AddNewtonsoftJson();

.NET Core 3.x - 5.x(Startup.cs)

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers()
        .AddNewtonsoftJson();
}

配置后,命名元组的自定义字段名会直接被序列化为JSON属性名,无需额外设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:11:20