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

Web API 2接收JSON对象后端为null问题排查与解决

完美解决Web API 2接收JSON对象为null的问题

嘿,我一眼就定位到你这个问题的核心原因了!后端接收的RateioSimplesRequestModel对象始终为null,最关键的问题出在实体类的属性访问修饰符上。

核心问题:属性未设置为public

你的RateioSimplesRequestModel类里的ItensRateio和ItensMaterial属性没有添加public修饰符,默认是私有(private)的。而Web API默认使用的Json.NET序列化器只能对公共(public)成员进行反序列化,所以根本无法将JSON里的值映射到这些私有属性上,最终导致整个对象为null。

修改后的实体类代码

把这两个属性改成public即可:

public class RateioSimplesRequestModel {
    // 添加public修饰符
    public List<ItemRateio> ItensRateio { get; set; }
    public List<ItemMaterial> ItensMaterial { get; set; }
    
    public RateioSimplesRequestModel() {
        ItensRateio = new List<ItemRateio>();
        ItensMaterial = new List<ItemMaterial>();
    }
}

额外的验证检查点

解决核心问题后,还可以确认以下几点确保万无一失:

  • 请求头必须包含Content-Type: application/json:这是Web API正确识别JSON请求的前提,如果没有这个头,后端可能无法正确解析请求体。
  • JSON属性名与类属性名匹配:你当前的JSON里的ItensRateio和类里的属性名完全一致,这点没问题。如果后续使用驼峰命名(比如itensRateio),可以通过配置Json.NET的序列化规则来自动映射。
  • JSON格式正确性:你的请求JSON格式是合法的,不过注意Valor字段里的R$符号如果后续要转成数值类型的话可能需要处理,但当前是字符串类型,不影响对象反序列化。

完成上述修改后,你的Web API接口应该就能正确接收到JSON映射后的对象了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:21