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

ASP.NET Core Web API:PUT请求对象数组绑定失败问题

问题解决方法

核心问题及对应解决方案如下:

1. 将ReadingSet中的Readings字段改为属性

ASP.NET Core模型绑定默认仅处理带get/set访问器的公共属性,你当前定义的Readings是公共字段,无法被自动绑定。修改代码如下:

public class ReadingSet {
  // 替换为带get/set的自动属性,保留默认初始化逻辑
  public List<Reading> Readings { get; set; } = new List<Reading>();
   
  public ReadingSet() { }

  public ReadingSet(List<Reading> readings)
  {
      // 直接赋值即可,无需循环添加元素
      Readings = readings;
  }
}

2. 明确指定参数绑定来源(可选但推荐)

在控制器接口的参数上添加[FromBody]特性,明确告知框架从HTTP请求体中读取JSON数据进行绑定:

[HttpPut]
public async Task<ActionResult<Score>> ComputeScore([FromBody] ReadingSet readings)
{
  // ...
}

额外兼容处理:字符串转整数的绑定

你提交的JSON中value是字符串类型(如"37"),但Reading类的Value是int类型。默认情况下System.Text.Json会自动完成字符串到整数的转换,无需额外操作。若遇到转换失败的场景,可以给Value属性添加特性显式允许该转换:

using System.Text.Json.Serialization;

public class Reading
{
  public string Type {get; set;} = "";
  
  [JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)]
  public int Value {get; set;} 
  
  public Reading() { }

  public Reading(string type, int value)
  {
      Type = type;
      Value = value;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:22:40