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

.NET Core 5向前端返回指定字段精简类JSON的推荐解决方案

.NET Core 5 按需返回精简JSON的解决方案

以下是不同场景下的可选方案,按推荐优先级排序:

方案1:使用专用DTO(数据传输对象)【最推荐】

这是.NET生态的标准最佳实践,针对不同返回场景定义独立的轻量级传输类,从根源上避免冗余字段:

// 文件类资源返回DTO
namespace Tasks.Dtos
{
    public class FileResourceDto
    {
        public Guid Id { get; set; }
        public string Type { get; set; }
        public string Name { get; set; }
    }

    // URL类资源返回DTO
    public class UrlResourceDto
    {
        public Guid Id { get; set; }
        public string Url { get; set; }
        public string Name { get; set; }
    }
}

业务逻辑中可以手动映射或者通过AutoMapper等工具将Resources实体转换为对应DTO返回,完全不会出现多余字段,同时支持类型校验,后续字段调整维护成本低。

方案2:配置序列化规则忽略null值【适合不想新增类的场景】

.NET Core 5默认使用System.Text.Json做JSON序列化,可以配置全局/局部忽略null值字段,未赋值的属性就不会出现在返回结果中:

全局配置(Startup.cs/Program.cs)

services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 序列化时忽略值为null的属性
        options.JsonSerializerOptions.IgnoreNullValues = true;
    });

如果只需单接口生效,也可以在返回时自定义序列化配置:

var jsonOptions = new JsonSerializerOptions { IgnoreNullValues = true };
return Json(response, jsonOptions);

方案3:返回匿名对象【适合临时快速开发场景】

不需要额外定义类,直接在控制器返回时按需构造匿名对象即可:

// 文件类资源接口返回示例
public IActionResult GetFile(Guid resourceId)
{
    var resource = _context.Resources.Find(resourceId);
    return Ok(new 
    {
        resource.Id,
        resource.Type,
        resource.Name
    });
}

// URL类资源接口返回示例
public IActionResult GetUrl(Guid resourceId)
{
    var resource = _context.Resources.Find(resourceId);
    return Ok(new 
    {
        resource.Id,
        resource.Url,
        resource.Name
    });
}

该方案无需新增类,但没有类型校验,复杂业务场景不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:06:03