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

ASP.NET Core Web API中如何将字符串数组传入JSON键

解决ASP.NET Core 6 Web API无法识别请求负载键名的问题

你的问题出在请求负载结构和参数类型不匹配:请求是一个包含names数组的对象,但你用string[]作为参数,模型绑定只会尝试把请求根直接解析成数组,自然识别不了外层的names键。

以下是两种可行的解决方法:

方法1:创建匹配请求结构的DTO类(推荐)

定义一个和请求负载结构对应的类,让模型绑定能正确映射键值对:

public class NameRequest
{
    public string[] Names { get; set; }
}

然后修改接口方法的参数:

public async Task<ActionResult<IEnumerable<EmpDetails>>> GetDetails([FromBody] NameRequest request)
{
    // 通过request.Names获取数组值
    var names = request.Names;
    // 后续业务逻辑...
}

方法2:使用动态类型接收(无需创建类)

如果不想额外定义类,可以用Newtonsoft.Json.Linq.JObject(需确保项目引入Newtonsoft.Json包)或者ASP.NET Core内置的System.Text.Json.JsonElement来接收,再提取数组:

用JObject的示例:

using Newtonsoft.Json.Linq;

public async Task<ActionResult<IEnumerable<EmpDetails>>> GetDetails([FromBody] JObject request)
{
    string[] names = request["names"].ToObject<string[]>();
    // 后续业务逻辑...
}

用JsonElement的示例:

using System.Text.Json;

public async Task<ActionResult<IEnumerable<EmpDetails>>> GetDetails([FromBody] JsonElement request)
{
    request.TryGetProperty("names", out JsonElement namesElement);
    string[] names = namesElement.Deserialize<string[]>();
    // 后续业务逻辑...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:18:20