我正在.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
它没有被处理。
这样对吗?或者上层行为还有其他原因。