1

我正在.NET 中创建 POST API。我有以下课程。

public class Item
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

以下是控制器方法。

第一种方法:-

public IHttpActionResult Post([FromBody]Item item)
{
    // some code

    return Ok();
}

第二种方法:-

public IHttpActionResult Post()
{
    Item item = null;
    var reqContent = Request.Content.ReadAsStringAsync().Result;
    if (reqContent != null)
    {
        item = JsonConvert.DeserializeObject<Item>(reqContent);
    }

    // some code

    return Ok();
}

问题是当我发送age=''age=null请求时,在第一种方法中,它需要,item.Age=0但在第二种方法中,它会抛出异常Error converting value {null} to type 'System.Int32'.

为什么会发生这种情况,我无法理解。

我的猜测是,在FromBody这种类型的对话中处理空值是句柄,但JsonConvert.DeserializeObject它没有被处理。

这样对吗?或者上层行为还有其他原因。

4

0 回答 0