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

提交JSON数据后Wagons集合count为0的原因排查

Swagger提交JSON后Wagons集合为空的原因分析

输入的请求JSON

{
    "Train":
    {
        "Name":"Ekspres",
        "Wagons":
        [
            {"Name":"Wagon 1", "Capacity":100, "FullSeatNumber":68},
            {"Name":"Wagon 2", "Capacity":90, "FullSeatNumber":50},
            {"Name":"Wagon 3", "Capacity":80, "FullSeatNumber":80}
        ]
    },
    "PersonReservation":3,
    "DifferentWagon":true
}

对应的C#实体类

public class Root
{
    public Train Train { get; set; }
    public int PersonReservation { get; set; }
    public bool DifferentWagon { get; set; }
}

public class Train
{
    public string Name { get; set; }
    public List<Wagon> Wagons { get; set; }
}

public class Wagon
{
    public string Name { get; set; }
    public int Capacity { get; set; }
    public int FullSeatNumber { get; set; }
}

可能的原因

  • 集合未初始化:C#类中Train的Wagons属性仅声明了List<Wagon>类型,但未在构造函数中初始化实例。部分序列化框架(如System.Text.Json)在反序列化时,不会自动为未初始化的集合创建实例,导致JSON中的数组无法填充进去,最终集合count为0。解决方法是在Train类的构造函数中初始化Wagons:

    public class Train
    {
        public Train()
        {
            Wagons = new List<Wagon>();
        }
        public string Name { get; set; }
        public List<Wagon> Wagons { get; set; }
    }
    
  • 大小写匹配问题:如果后端使用的序列化框架(比如Newtonsoft.Json)未开启大小写不敏感配置,而Swagger实际发送的请求体中Wagons字段名大小写与C#属性不一致(比如误写为小写wagons),会导致属性无法绑定。可以通过浏览器开发者工具查看Network面板中的请求payload,确认字段名大小写是否和C#属性完全一致;也可以在序列化配置中开启大小写不敏感,比如System.Text.Json的配置:

    services.AddControllers()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
        });
    
  • Swagger实际发送的请求体有误:Swagger UI有时会因注解或配置问题,导致实际发送的请求体与手动输入的不一致(比如Wagons数组被遗漏、格式错误)。建议通过抓包工具查看真实的HTTP请求内容,确认JSON结构是否正确。

  • 序列化配置异常:如果后端配置了自定义的序列化转换器、忽略某些属性的规则,可能影响Wagons集合的反序列化。检查项目中的序列化配置,确认没有排除Wagons属性,也没有自定义逻辑干扰集合的绑定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:01:06