ASP.NET Core 5 Web API如何绑定请求体中的简单类型?
问题原因&解决方案
你遇到的问题是因为ASP.NET Core的[FromBody]绑定简单类型时,默认只认原始的JSON值,而不是带属性的JSON对象。你现在发的{"value":"testValue"}是一个JSON对象,和string类型不匹配,所以绑定失败。
下面给你两种不用创建复杂类型的解决办法:
方法1:直接发送字符串值
在PostMan里保持raw > JSON,但不要传对象,直接写带双引号的字符串:
"testValue"
这样[FromBody] string value就能直接拿到testValue。
方法2:接收JSON对象并提取值
如果一定要传{"value":"testValue"}这种格式,不用创建实体类,可通过以下几种方式提取值:
用JObject(需要Newtonsoft.Json包)
using Newtonsoft.Json.Linq; public IActionResult Test([FromBody] JObject requestData) { string value = requestData["value"]?.ToString(); // 后续逻辑 }
用dynamic
public IActionResult Test([FromBody] dynamic requestData) { string value = requestData.value; // 后续逻辑 }
用System.Text.Json的JsonElement(.NET Core 3.0+ 默认支持)
using System.Text.Json; public IActionResult Test([FromBody] JsonElement requestData) { requestData.TryGetProperty("value", out JsonElement valueElement); string value = valueElement.GetString(); // 后续逻辑 }
内容的提问来源于stack exchange,提问作者byteram
相关产品推荐
相关产品推荐

